Skip to main content

Full text of "Micro Sistemas"

See other formats


A 


« 
















Micro Processadores Redes Neurais Fivewin 


Última Parte 


Parte 2 Parte 4 

h m «yJKEi? v J; u 




























































txks.im e m.iiv,» ivjMi.uI.i il.i .txkVim s> vleni > lue 


ONDE 



e você costuma armazenar seus textos em um editor de textos e depois 
não consegue lembrar do nome dos arquivos... 


Se você necessita trabalhar com informações estruturadas 
em campos e com informações desestruturadas ao mesmo tempo... 


Então você precisa do banco de dados 

textual e hipertexto 



Que tal um software que, além de buscar informações por 
qualquer palavra ou frase do texto, permite que você organize 
as Home Pages e as suas mensagens do correio eletrônico em 

bases de dados para posterior recuperação? 

#• 

Nas versões Monousuário, Rede, Electronic Publisher 

e Web Publisher. 


Consulte-nos: 



Tel/Fax: (021)571-5372 F-mail: snMlasitfprolink.com.br 

http://www.egeria.com.br 

















































































PROGRAMA EM C PARA 
CRIPTOGRAFIA DE ARQUIVOS 


PROTEJA SEUS DIREITOS AUTORAIS 


Marco Antônio de Araújo Paiva 



Ruhen Nascimento da Rocha 4 


PROGRAMA EM PASCAL PARA 
DETECTAR E REMOVER O 
• VÍRUS LEANDRO AND KELL Y 


IMPRESSÃO EM DELPHI 


Daniel Ornar Basconcello Filho 33 


ANIMAÇÃO EM ASCII COM O CLIPPER 

9 9 9 V 9 


Dorival Afonso Cardozo 


8 Carlos Emi/io Padilla Severo 



FUNÇÃO PLA Y PARA ÇA-ÇUPPER 

Marcos Antônio Gamheta 12 



DES VENDA ND A NDO A 
TECNOLOGIA DO PENTIUM MMX 


Andretti Barros 

16 

CAÍ NO MUNDO 


Marcelo Zóchio 

9 

18 

AL TERANDO MENU DE CONTEXTO 
DO WINDOWS 95 COM O V.B. 

Disnei Rocha Bernardo 

21 


FiveWin e a Migração de Aplicações 
Clliper para o Windows (Parte 4 de 5) 

Vilian F. Arraes 40 

CaUMR Dortncio 

Microprocessadores e Placas de CPU 

Laéreio Vasconcelos 36 


• RELÓGIO DIGITAL EM CLIPPER 


Marcus Fúlvio 23 

REDES NE URAIS AR TIFICIAIS (Pane 2) 


Carlos A. Thompson PhD . ‘ 25 



Diretor: Marcelo Zóchio 
Editor: Julio M. F. Santos 
Redação: Mareia Corrêa 
Arte: Marcelo Zóchio e Julio M. F. Santos 
Colaboradores: Carlos A. Thompson. Phd , 
Rubem Nascimento da Rocha, Lacrcio 
Vasconcelos e Vilian F. Arraes, Dorival A. 
Cardozo, Marcos A.Gambeta, Andretti Barros, 
Disnei R. Bernardo. Marcus Fúlvio, Marco 
Antônio de A. Paiva, Daniel Ornar B. Filho. 

Carlos Emilio P. Severo. 
Distribuição: Fernando Chinaglia Dist. Ltda. 
Tcl.: (021) 575-7725 / 575-7766 
Assinaturas: 1 ano - R$60,00 / 2 anos - 

R$ 120,00 


Venda de Assinaturas 

Rio de Janeiro: Alessandre Rodrigues Nogueira 
Tel (021) 532-0770 cod.4016779 
TEL/FAX: (021) 261-7841 , 

2 a a 6 a de ( 09 às 17 horas) 

. Os artigos publicados são de responsabilidade única 6 
exclusiva dos autores. Todos os direitos do conteúdo da 
revista cstào reservados e qualquer reprodução, com 
finalidade comercial ou não. só poderá ser feita mediante 
autorização prévia. Transcrições parciais de textos para 
comentários ou referências podem ser feitas, desde que sejam 
mencionados os dados bibliográficos de Micro Sistemas. 


REVISTA MICRO SISTEMAS 

Caixa Postal 18347 
Rio de Janeiro - RJ - CEP 20722-970 














































« 

Por: Rubem Nascimento da Rocha 



Veja com Rubem Rocha, como 
proteger seus aplicativos contra 
a pirataria. 


Um Recurso não Documentado Muito 

0 

Uríl para Proteção de Aplicações 

Muitos desenvolvedores no Bra¬ 
sil inteiro têm a constante preocu¬ 
pação em, além de fornecer aplica¬ 
ções seguras, eficientes e rápidas a 
seus clientes, instaurar uma manei¬ 
ra de que seu produto intelectual não 
seja burlado, ou seja, tenha o seu 
software copiado ilegalmente. Até 
onde me consta, se um programador 
desenvolve um software e, por um 
acaso do destino, ele for pirateado 
por um energúmeno que não tem o 
que fazer da vida, você pode mover 
uma ação contra este cidadão e fazê- 
lo pagar a você uma indenização re¬ 
ferente a duas mil vezes o valor do 
software. No intuito de que as apli¬ 
cações por nós desenvolvidas não 
caiam na rede da pirataria, muitos 
programadores não têm medido es¬ 
forços para criar ferramentas para 
dificultar, e até impedir, que o retor¬ 
no de seu investimento de semanas, 
meses ou anos seja escoado pelo 
ralo. Uma ferramenta de que tenho 
ouvido muito é o HandProt, desen¬ 
volvido pela Squadra, voltado para 
desenvolvedores Delphi. 

Entretanto, usando da boa e velha 
criatividade do brasileiro, você mes¬ 
mo pode ir à luta e desenvolver o seu 
próprio método para instalação e 
proteção de suas aplicações, seja em 
qual linguagem você escolher. É o 
que proponho neste artigo, no qual 
ilustro uma técnica não documenta- 
da no MS-DOS (que também funci¬ 
ona no Windows 95 e Windows NT) 
para identificação de discos rígidos 
e flexíveis. 

Identificação de Discos Flexíveis 

e Rígidos 

No versão MS-DOS 4.0 e posteri¬ 
ores, existe uma função não docu¬ 
mentada da interrupção 21 h, serviços 
do MS-DOS, que permite, além de sa¬ 
bermos o número de série do volume 
do disco, seja ele rígido ou flexível, 
sabermos qual o sistema de arquivos 
ou o tipo de dispositivo em questão. 
Ela também nos permite ajustar o 
número de série. Este serviço é ilus¬ 
trado a seguir: 


4 


































/ Rmteja seus L>ireitos Autorais 


Interrupção 21h * Função 69h 
( Obtém/Ajusta o Número de Série ) 

Entrada: AH = 69h 

AL = subfunção (00-obtém/01-ajusta) 

BL = drive (0-default, 1-A:, 2-B:, etc.) 

BH = nivel da informação (=0, sempre) 

DS:DX = endereço do buffer onde serão 
obtidas as informações 

Saida: Se CF (Carry Flag) = 1, houve um erro e 

o registrador AX terá o código do erro; 

Se CF (Carry Flag) = 0, sucesso na operação. 


Se o Carry Flag (CF) estiver lim¬ 
po (=0), a operação que foi 
especificada na chamada da funçào no 
registrador AL será completada com 
sucesso, ou seja, se AL=0, os dados 
pedidos serào enviados ao buffer 
referenciado no endereço indicado 
no par de registradores DS:DX; se 
AL=I, os dados contidos no buffer 
indicado no endereço DS:DX foram 
gravados no disco. 


Para o MS-DOS, Windows 95 e 
Windows NT, o campo nivel de infor¬ 
mação é sempre 0. Para o OS/2, exis¬ 
tem outros niveis. Se o disco nào pos¬ 
suir nome de volume, será retornado 
o nome “NO NAME" alinhado à es¬ 
querda com espaços em branco. Os 
valores que poderào ser retornados na 
posição llh do buffer de dados sào 
os seguintes: 


Na listagem I, SERIAL.C, temos 
uma funçào escrita em Turbo C, para 
uso em Clipper 5.x, para uso identi¬ 
ficar números de série de discos rí¬ 
gidos e flexíveis em aplicativos es¬ 
critos em linguagem Clipper. Na 
listagem 2, SERIAL.PRG, um exem- 
pio bem simples de chamada da fun¬ 
çào em C em um programa CA- 
Clipper 5.x. 


Note bem que as aplicações des¬ 
ta funçào podem ser as mais varia¬ 
das possíveis, tais como: identifi- 
caçào de discos de instalação para 
impossibilitar o uso caso os dis¬ 
cos sejam copiados; permitir que 
uma aplicaçào rode somente no 
micro em que foi instalado, a par¬ 
tir do momento e que se grava na 
própria aplicaçào, de forma 


criptografada e/ou compactada, as 
informações particulares do disco 
rígido, etc. 

Considerações Finais 

Com base no que foi exposto 
neste artigo, concluo que cada 
desenvolvedor ou equipe de 
desenvolvedores adotará uma fi¬ 
losofia e métodos próprios ou 
nào para implementar proteçào 
contra cópias ilegais de seus pro¬ 
dutos. A informaçào contida nes¬ 
te artigo pode ser aplicada em 
qualquer linguagem (Basic, 
Assembly 8086/88, C, C + + , 
Clipper, Delphi, Borland Pascal 
For Windows, Visual FoxPro, 
etc.). Portanto, vai ao gosto do 
freguês, ou seja, ou o programa¬ 
dor empenha-se em desenvolver 
suas próprias técnicas de prote¬ 
çào, implicando em explorar mais 
recursos a nivel de hardware e sis¬ 
tema operacional, ou faz uso de 
ferramentas prontas para tal, tipo 
InstalIShield e HandProt. Um 
grande abraço a todos. 


Até a próxima ! 


Rubem Nascimento da Rocha tem 

21 anos e é Técnico em infor¬ 
mática Industrial formado pela 
ETFAM-Escola Técnica Federal 
do Amazonas. Endereços para 
eventuais contatos: 

Av. Efi génio Sales (V-8), Beco 
Santo Antônio . 127 - Aleixo CEP 
69060-05 7, Manaus-Amazonas 
Fones: (092) 236-3819/642-1719 
Fax: (092) 642-3075/642-1486 
e-mail: rubemrocha@netium.com.br 


Tipos de Sistemas de Arquivos Retornados pela Funçào 69 h, ÍNT 21 h 

TIPO 

SIGNIFICADO 

FAT12 

FAT de 12 bits (Discos Flexíveis) 

FAT16 

FAT de 16 bits (Discos Rígidos) 

CDROM 

Sistema de CD-ROM High-Sierra 

( DOO 1 

Sistema de CD-ROM ISO 9660 

CDAUDIO 

CD de Áudio 


Formato do Buffer de Informações do Disco (INT 21 , Função 69h) 

Deslocamento 

Tamanho 

Descrição 

00h 

WORD (2 BYTES) 

Nivel da Informaçào 

02h 

DWORD (2 WORDS) 

Número de Série do Disco 

06h 

11 BYTES 

Nome do Volume 

llh 

8 BYTES 

Se AL=0, Tipo do Sistema de Arquivos 


















/ Proteja seus Direitos Autorais 

• * 


===== Listagem 1 - NUMSERIE.C ===================== 

/* NUMSERIE.C - Função em C para Clipper para 
identificação de discos rigidos e flexiveis 
Compilar: TCC -C -ML - I<include_path> 
NUMSERIE.C 

CBS.: No include_path, colocar separados por ponto*e-virgula, os 
diretórios INCLUDE do Clipper e do Turbo C, obrigatoriamente 
nesta ordem. */ 

#include <dos.h> 

#include <extend.h> 

#define DIGITS "0123456789ABCDEF" 
typedef unsigned int serialnumber[ 2 ]; 
typedef struct { 
int infolevel; 

serialnumber numero__de_serie; 
char volume[ 11 ], filesystemf 8 ]; 

) serialinfo; 

void getserial( serialnumber numero ); 

CLIPPER serial() 

{ 

serialinfo info; 
union REGS r; 
struct SREGS s; 
int drive; 

drive = ! ISNUM( 1 ) ? _parni( 1 ) : 0 ); 

r.h.ah = 0x69; 

r.h.al = 0x00; 

r.h.bh = 0x00; 

r.h.bl = drive; 

r. x.dx = FP_OFF( ( void far * ) &info ); 

s. ds = FP_SEG( ( void far * ) &info ); 
info.infolevel * 0x00; 

int86x( 0x21, &r &r, &s ); 
if ( !( r.x.f lags & 1 ) ) 


getserial( info.numero_de_serie ); 
else strcpy( retorno, "0000-0000" ); 
__retc ( retorno ) ; 

} 


/♦ Formata o retorno da função */ 
void getserial( serialnumber numero ) 
{ 


retomo ( 0 ] 
retorno[ 1 ] 
retorno[ 2 ] 
retorno[ 3 ] 
retorno[ 4 
retorno[ 5 ] 
retorno[ 6 ] 
retomo I 7 ) 
retomo! 8 ] 
} 


= DIGITS[ 
= DIGITS! 
= DIGITS! 
= DIGITS! 

] = ' •' ; 
= DIGITS! 
= DIGITS! 
= DIGITS! 
= DIGITS! 


( numero! 
( numero! 
( numero! 
( numero! 

( numero! 
! numero! 
( numero! 
( numero! 


1 ] / 256 ! 
1 ] / 256 ) 
1 ] % 256 ; 
1 ] % 256 ) 

0 1 / 256 ] 
0 ] / 256 ) 
0 ] % 256 ] 
0 ] % 256 ) 


» 4 ] ; 

& OxOF ] ; 

» 4 ] ; 

& OxOF 1 ; 

» 4 ] ; 

& OxOF ] ; 

» 4 ] ; 

& OxOF ) ; 


======Listagem 2 - SERIAL. PRG ===================== 

//Código em CA-Clipper 5.x exemplificando chamadas à função 
//Serial (), escrita em Turbo C, para identificação de núme- 
// ros de série em aplicações Clipper. 

// Compilação: CLIPPER SERIAL /M /N /A /W 
//Linkediçáo: BLINKER SERIAL, NUMSERIE LIB \TC\LIB\CL 
//OBS.: A biblioteca CL.LIB é a biblioteca do Turf>o C que 
// seque o modelo de memória dos programas Clipper. 
r / Ela DEVE ser linkada, caso contrário a função não 
//funcionará. Na linha de linkediçáo, forneça o ca- 
// minha completo onde se encontra a biblioteca CL. 
//A mesma sintaxe de linkediçáo pode ser usada.com o 
RLINK. 

FUNCTION MainO 

QOUT( "Coloque um disco no Drive A: e tecle algo ..." ) 
INKEY( 0 ) 

QOUT( "Número de Série Disco A: ", Serial! 1 ) ) 
QOUT( "Número de Série Disco C: ", Serial! 3 ) ) 

RETURN NIL 


VOCE FICARIA DE BOCA ABERTA SE SOUBESSE 

DE QUANTO PRECISA PARA 
PREENCHER ESTE ESPAÇO COM OANÚNCIO 

DE SUA EMPRESA 

9L 

REVISTA MICRO SISTEMAS TEL: (021) 589-2088 




6 





































VIDA DES 


ACER LANÇA SERVIDOR VOLTADO PARA REDES DE 

PEQUENO E MÉDIO PORTE 


Servidor Altos Uno supre todas as necessidades desses seg¬ 
mentos com preços próximos ao de uma estaçào de trabalho. 

A Acer do Brasil participou da Condex 97 
apresentando ao mercado toda sua linha de pro¬ 
dutos, composta por servidores, micros PC 
multimídia, desktops corporativos e notcbooks. 

Além disso, durante a feira, a Acer do Brasil esteve 
lançando um novo servidor voltado para o mercado low- 
eixl. Denominado Acer Altos UNO , o novo equipamen¬ 
to foi desenvolvido especialmente para atender às ne¬ 
cessidades das empresas, oferecendo a melhor combi¬ 
nação de rendimento, confiabilidade e preço. 

Destinado às redes de pequeno e médio porte, 

Acer Altos UNO reúne características que visam facilitar o 
dia-a-dia destas companhias. Com design compacto e no for¬ 
mato de mini-torre. o novo servidor é fácil de ser instalado, 
possui alta capacidade de expansão, recursos para configura¬ 


ção e monitoramento do sistema, contando ainda com dis¬ 
positivos de alarmes, que detectam e informam o usuário 

sobre possíveis problemas antes de parar. 

Segundo Marco Zapparoli, gerente do depar¬ 
tamento de servidores da Acer do Brasil, o 
AcerAltos UNO além de ser uma excelente so¬ 
lução para as pequenas e médias redes é tam¬ 
bém indicado como servidor departamental. 

O preço é outro importante diferencial do novo 
equipamento. “Por pouco mais do que custaria uma 
estação de trabalho, adptada para operar como servi¬ 
dor de rede. o usuário pode contar com tixlos os 
recursos de um verdadeiro servidor corporativo", afir¬ 
ma Zapparoli, lembrando que. atualmente as empresas de menor 
porte utilizam micros desktop como servidores de rede, o que 
pode ocasionar problemas sérios com lentidão na troca de dados 
e até travamento do sistema. 



YANCO LANÇA MOUSE COM TECNOLOGIA EXCLUSIVA 

E PREÇO COMPETITIVO 


A Yanco Tecnologia, empresa nacional fabricante de aces¬ 
sórios para informática e para automação comercial está lan¬ 
çando no mercado mais um mouse inovador. Batizado de Yanco 
Toppo o equipamento substituirá com vantagens o Yanco 
Optic, atual carro-chefe da linha de mouses da empresa. 

Também com tecnologia scmi-ótica o Yanco Toppo pos¬ 
sui características exclusivas e inovadoras. Os principais des¬ 
taques do novo mouse são o design ergonómico, o tempo de 
rolagem, estimado em 480 quilômetros, e a vida útil de seus 
botões, que foram projetados para mais de um milhão de 
acionamentos. Estas características garantem uma média de 
100 mil horas de uso sem apresentação de nenhum defeito. 

A tecnologia semi-ótica pennite transcodificar os movimen¬ 
tos da esfera, localizada na parte inferior do mouse, que fica em 
contato da superfície através de um sensor infravermelho. Nos 
mouses tradicionais essa tarefa é feita de fornia mecânica, o que 
compromete a vida útil do equipamento. Já, os dois botões do 


Yanco Toppo possuem resolução real de 4(X) dpi e dinâmica en¬ 
tre 4 e 40.(XX) dpi. Além disso, o novo mouse conta com uma 
incrível veloeidade de operação máxima na faixa de 500mm/s. 

Além disso, sua embalagem foi totalmente reformulada 
apresentando dimensões maiores, suporte para ser colo¬ 
cada em gôndolas de loja e uma janela transparente que 
permite maior visualização do produto. 

Outra grande vantagem do Yanco Toppo é o preço. Com¬ 
patível com os ambientes DOS, Windows 3.1 e Windows 
95. O Yanco Toppo possui garantia de um ano para defçitos 
de fabricação e possui certificação FCC e CE. 

Com o lançamento, a Yanco pretende conquistar ainda 
mais espaço no mercado brasileiro de acessórios para 
informática. Atualmente, a empresa comercializa 9.000 
mouses por mês. Para o Yanco Toppo a expectativa é 
comercializar mensalmente 15.000 unidades, afirma Cás- 
sio Pedrào, diretor de marketing da Yanco Tecnologia. 


7 
































Progra m a 
em Pascal 
para Detectar 
e Remover 
o Vírus 

Leandro 
and Kelly 

Por: Dorival Afonso Cardozo 


Conforme você poderá constatar lendo este artigo, 

Dorival A fonso Cardozo esclarece de forma extremamente 
objetiva e clara, como se comporta o famoso vírus 
Leandro e Kelly na memória volátil do computador (RAM) 
hem como na memória de massa (disco). De quebra, o 
autor apresenta passo a passo como ocorre o processo de 
inicialização do sistema operacional em disco. 

8 


Histórico do lírus Leandro A Kelly 

Origem: Minas Gerais - Governador 
Valadares (Duvido!) 

O nome c tào patético que sugere ser 
mesmo nome fantasia nào? 

Captado: Primavera/94 cm 05/10/94 

Encontrado: Bootde um Disco Flexível 

Local: PAULÍNIA-SP(EmprcsaComercial) 
Encontrado em um disquete de 
Software Original (Acredite!) 

Surgiu pela primeira vez, em outu¬ 
bro de 1994, causando grande pânico 
nacional. 

Foi distribuído largamente em um dis¬ 
co original (ou seria pirata?) de uma con¬ 
ceituada empresa multinacional, nome 
que nào divulgo por motivos óbvios. O 
vírus se alastrou de forma relâmpago. 

Naquela época, lembro-me .quando 
várias pessoas assustadas me procura¬ 
ram após sofrerem a reaçào do vírus que 
exibia a frase: LEANDRO & KELLY... 
no video do computador. 

Mesmo nào sendo um vírus nocivo ele 
pode ser fatal, se combinado com outro 
vírus, o que pode acarretar a danificação 
do Setor BOOT MASTER do disco rígi¬ 
do e a impossibilidade de acessâ-lo. 

Duvido que seja mesmo um vinis mi- 

p 

nciro como se divulga. E óbvio que o au¬ 
tor jamais divulgaria o local onde foi pro- 
duzido (SAO PAULO provavelmente). O 
que estava grave na época é que os discos 
originais onde ele estava gravado (3,5") 
nào possuíam a chave WRITE/PROTECT, 
ou seja o disco estava fisicamente impos¬ 
sibilitado de gravaçào... (amargas épocas 
que sempre podem voltar...) Penso que a 
coisa toda foi mesmo armada... se é que 
vocês me entendem... Fazer um vírus esti¬ 
lo Romeu e Julieta e distribuído em mas¬ 
sa? Muito, muito estranho... obra de uma 
mente Mozartiana? O que pretendia o au¬ 
tor deste esquema todo? 

Primeiro Saiba Como se Organiza na 
Memória esta Coisa... 

Veja este algoritmo básico: 

0000:7C00 - Primeira Parte do Vírus. 
Lido pela BIOS automaticamente. 


























/í /í / / (7 O / Programa em Rascai (síntí- Vírus) 


0()()0:7E00 - Segunda Parte do Ví¬ 
rus. Lido pelo vírus durante execu¬ 
ção corno OVFRLAY da trilha 27h 
Setor 9. 

Em determinada parte (primeira do 
\ irus) ele se auto copia no topo da me¬ 
mória básica, normalmente cm 
9F00:000. ficando: 

9F00:0!FF - Primeira Parte 
9F00:0200 - Segunda Parte 

Após copiar, ele salta para ele mes¬ 
mo (seu clone), porém cm outra área 
na memória, ile ()()()0:7C7D para 
9F0():()()7Eh. 

Agora Saiba Como Está o Disco 
Contaminado 

Trilha 0, Setor I Lado 0 = Primeira 
parte do Vírus (Onde deveria estar o 
Boot). Saiba que o BIOS chamará isto 
quando você ligar o computador com 
o disco no drive, pensando encontrar 
o BOOT. 


Trilha 27, Setor 8 Lado I = Segun¬ 
da parte do vinis. 

Trilha 27, Setor 9 Lado I = Boot Ori¬ 
ginal que deveria estar na Trilha 0, Se¬ 
tor I Lado 0. 

Compreenda os Passos do seu Com¬ 
putador até Chegar no Prompt do 
Sistema 

1. O microprocessador executa o pro¬ 
grama existente no endereço 
FFFF:0000, onde existe o programa do 

CHIP BIOS (Físico). 

2. O Programa do BIOS após os 
“checkups'* costumeiros, vai ler e exe¬ 
cutar o conteúdo no BOOT do disquete. 

3.0 conteúdo do BOOT do disquete (progra¬ 
ma de BOOT) é um programa de inicialização 
e um bloco de parâmetros contendo Trilha, Se¬ 
tor por trilha, cluster, etc. NESTA PARTE É 
QUEOVÍRUSVAI ENTRAR, SUBSTITU¬ 
INDO ESTE PROGRAMA. 


4. Sem virus : O programa do BOOT cha¬ 
mara os arquivos de sistema IO.SYS.etc. 
Com virus : O Virus vai chamar o con¬ 
teúdo original (O programa de BOOT) 

O Programa de Boot chamado pelo virus 
vai chamar os arquivos de Sistema. IO.SYS. 
etc. No caso de disco rígido, primeiro o BIOS 
chamará o BOOT MASTER que logo após 
vai ler e laigar o controle para o BOOT do 
DOS. Caso o virus entre no disco rígido, vai 
se alocar entào no BOOT MASTER. 


Agora vamos ao Programa. 

Dorival Afonso Cardozo desenvolve 
software para Telecomunicação e Va- 

ê 

cinas para virus. E autor do anti-virus 
nacional KANTI e CHICO At 
Para eventuais contatos com o autor, 
escrever para: 

Rua Manoel Queiroz, 400 -Jardim Boa 
Vista - Limeira - SP - CEP I34B6-330 


== Listagem == 

J DETECTA E REMOVE O VIRUS LEANDRO AND KELLY DA UNI- 

DADEtSE EXISTIR) 

VA RI AVEL: So Detecta = true (Somente vai detectar mas nao vai remove-lo) 
SoDetecta = false (Detecta c remove o virus da unidade) 

Dorival AC 

laboratorioA M A DEUS -Tecnologia cm segurança de dados 

Para compilar. TPC rcmlk (é suficiente...) 

Use Assim: REMLK <drivc:> } 

const 

SoDctecta = false; 

\ar 

unid: string(2): 

function lcrFisSetoiL_seg w ofs :word: trilha, setor. cab. unid :byte ):booleun;' 

var 

tent: byte; 
carrv: bvte; 

w m 

begin 

tent := 0; 
repeat 

carry := 0; 
asm 

mov ax.()2() I h 
mov cs. _seg 
mov bx. _ofs 
mov ch. trilha 
mov cl. setor 
mov dh. cab 
mov dl. unid 
int I3h 
jnc (a (u j , I 
mov carry. I 
(iv.iu) I: 
end; 


tent := tent + I; 

until (tent > 5 ) or (carry = 0 ); 
if(tent>5)and(carryo0) then 

lerfissetor := false else lerfissetor := true; 

end; 

function EscrFisSetor(_seg^_ofs :word; trilha.setor.cab.unid :bytc ):boolean; 

var 

tent: byte; 
carry: byte: 

begin 

tent :=0: 
repeat 

carry := 0; 
asm 

movax,030lh 
mov es. _seg 
mov bx._ofs 
mov ch, trilha 
mov cl. setor 
mov dh. cab 
mov dl. unid 
int I3h 
jnc <&(& I 
mov carry. I 
(a)(a)\: 
end: 

tent := tent + I; 

until (tent > 5 ) or (carry = 0); 
if (tent>5) and (carryoO) then 

escrfissetor := false else eserfissetor := true: 

end: 

function BootTpJM Unid : byte ): Boolcan; 

var 

bootTp: array[0..S400] of byte; 

Vitima: array[()..$2(X)] of byte; 

Ofs, 


9 














.A /? T /(7 O / Pwgrawfl c*nt Pascal (.Anti- Vírus) 


_Scg : Word: 

\il_ofs. 


No drive C: ele se comporta sem erros apontando 80h(c:). | 

v it_seg: Word: 


ifnot Icrfissctort n it_seg.vit_ofs.trilha.setor.cab.unid) then 

tcnt : byte: 


begin 

carry : byte: 


Writcln(*ERROde Leitura no disco../): 

icm : Boolean: 


Exit: 

trilha. 


end: 

setor. 



cab : bvtc: 

w 


if not escrfissetort v it_seg.vit_ofs.0.1.0. unid ) then 

begin 


: \i I NCACh 

_Seg := Scg( BootT p); 


BootTp[$IE] ->0=drive A: l=driveB: 80h=C: 8lh=D: 

_Ofs := Ofs( BootTp): 


No entanto o virus Lenadro&Kelly tem um erro na programacao 
e o drive apontado sempre sera* 0 (A:) mesmo que seja B: } 

LcrFisSctort_seu._ofs.(). 1.0.unid): 


begin 

Tem := truc: 


\vriteln( * Erro de Escrita no disco../): 

• 


exit: 

if(BootTp[S20])o SOFA thcnTem := false: 


end 

• 

if(BootTp[S21 ]) o SOBC thenTem := false: 


cise 

if (BootTp[$22]) o SíKH) then Tem := false: 


begin 

if (BootTp[S23]) o S07C then Tem := false: 


Writcln(*REMOVIDO: Virus Lcandro&Kelly da unidade/): 

if(BootTp[$24]) o $033 then Tem := false: 


end: 



end: 

if(BootTp[S25|) o SOCO thcnTem false: 


end 

if(BootTp[S26]) o S08E thcnTem := false: 


else 

if(BootTp[$27J)oSODO thcnTem := false: 


begin | nao encontrado J 

if (BootTp[S28]> o $0B8 then Tem := false: 


BootTpJk := false: 

if (BootTp{$29]) <> SOOO then Tem := false: 


end: 



end: 

iíTcm then 
begin 


begin 

BootTpJk := truc: 


if ParamCount = 0 then 

vvritcliK#7.*EN( ONTRADO VIRUS Leandro&Kelly na Unidade ): 


begin 

\ it_scg := seg( vitima): 


writcln(#7/Faltou Definir Drive...*): 

vit_ofs := ofs( v itima): 


Halt( 1): 
end: 

if not SoDetecta then 
begin ! Lendo vitima { 


unid := ParamStrt 1): 

trilha := biWtlp|Sld|: 


case UpCase(Llnid[ 1 ])of 

setor := boottpl S1 cj: 


*A‘: ifnot BootTpJk(O) then writcln(*Nada Encontrado../): 

cab := boottplSIF]: 


‘B*: if not BootTpJkt 1) then writeln(‘Nada Encontrado../): 

} unid := boottpl SI e]: Nao retirar comentário 


*C*: ifnot BootTpJk(S80) then writelnCNada Encontrado...'): 

Utilizar drive do CUICOAV devido a erro no Lk a unidade 


end: 

apontada sempre nchi 0 < \:) mesmo qiuitulo for B:. 


ciul 


MICRO SISTEMAS 

NOVO TELEFONE E FAX 

(021) 261-7841 


10 


























































APRENDA INFORMÁTICA SEM SAIR DE CASA COM RICARDO FLORES 


Mais informações? Solicite pelo correio Convencional ou visite minha 

Home Page no endereço 

HTTP://W3.0PL:NLINK.C0M.BR/RICARD()FLC)RI:s 


CADA CURSO E COMPOSTO DE: 

• Cronograma de aula a ser seguido. 

• Aposlila pelo Método Tutorial “Passo a Passo" pan^õc^rêmã^ãnirêxêrcícK HirTrêfãmcnHMnTHíêu 

• Disquete contendo os exercícios prontos do Tutorial, para você tirar suas dúvidas. 

Desejo receber por carta registrada, os cursos: 



De 

Por 



CURSO 

R$ 

R$ 


Qde. 

R$ 

Introdução à Informática até o IVIS/DOS 6.2 

1 

38,00 

22,80 

X 



Windows 3.1 

44,00 

26,40 

X 



Para Windows 3 . 1 , 3.1 1 ou 95 ou Cairo: í 

Painthrush dos 8 aos 80 Anos 

27,00 

16,20 

X 



CorelDRAW! 5.0 

47.00 

28,20 

X 

1 


Programação em Visual Basic 16/32 Bits 

44,00 

26.40 

X 

1 


Programação em Delphi 16/32 Bits com SQL 

58,00 

35,00 

X 



HTML - Criando sua Home Page na Internet 

27,20 

16,30 

X 



Word 6.0/7.0 - Editor de Texto 

44,00 

26,40 

X 


1 

Excel 5.0/7.0 - Planilha de Cálculo e Gráficos 

45,00 

27,00 

X 



Para DOS: 

• 




dBase III Plus - Banco de Dados Interativo 

27,00 

16,20 

X 



Programação em dBase III Plus 

27,00 

16,20 

X 



Programação em Clipper 5.01 / 02 (Básico) 

35,00 

21,00 

X 



TOTAL DO PEDIDO: 




Não perca! 


Promoção 


Arrasadora! 


D es co til o 
de 40% 



Aproveite! 
Faça já 


Depósito em numerário a favor de Audit System Serviços Ltda. 

Banco Itaú, agência 0934 Vila Isabel, Rio de Janeiro, C/C 22.142-5 
Ligue ou passe um Fax para (021) 571-5903 - Ricardo Flores, informando: 
seu nome, endereço completo e confirmando o crédito no valor TOTAL DO PEDIDO, 

já incluídas as despesas postais. 

Prazo de Entrega: Imediato. 



Paeamento Via Correio 


e-mail 

ricardoflores@openlink.com.br 


Cheque cruzado e nominal à Audit System Serviços Ltda. 


Envie para CAIXA POSTAL 25.096 - RIO, CEP 20.552-970. 
no valor TOTAL DO PEDIDO, já incluídas as despesas postais 
Prazo de Entrega: Após a compensação do cheque. 


Nome: 


2Fone: 

Endereço: 

• 

Bairro: 

Cidade: 

Estado: 

CEP: 

Data: 

Assinatura: 












































































Por: Marcos Antonio Gambeta 






Marcos Gambeto vem confirmar neste artigo 
a versatilidade da linguagem Clipper atè na 
geração de música digital. 

E importante o leitor observar que a 
experiência e a criatividade aliadas ao 
talento pessoal do programador são os 

9 

fatores que o diferenciam. 


Tocando a Música “Apanhei-te, 

Cavaquinho! ” 

A única funçào disponível na lingua¬ 
gem Clipper para a geraçào de sons é a 
fiinçào TONE. Com ela é possível emi¬ 
tirmos um som informando sua frequên¬ 
cia e duraçào. Apesar de ser útil para co¬ 
locarmos avisos sonoros nos programas, 
apresenta uma certa dificuldade quando 
nossa intenção é colocar um pequeno tre¬ 
cho musical ou uma música mais longa. 

Por exemplo: para uma música com 
50 notas teremos de calcular a freqüèn- 
cia e a duraçào de cada nota e criarmos 
uma seqüència de 50 comandos TONE. 

Apesar do Reference Guide - volume 
2 do CA-Clipper trazer uma tabela de 
notas musicais com as freqüências das 
notas em duas oitavas, teremos bastante 
trabalho para tocar a nossa música. 

Quem utiliza o GW-Basic ou o MS- 
DOS QBasic tem a instrução PLAY que 
permite tocar uma música através de 
uma sequência de comandos. Pensando 
em passar esta facilidade para a lingua¬ 
gem Clipper, desenvolvi uma fiinçào que 
funciona de forma semelhante ao co¬ 
mando PLAY do MS-DOS QBasic. 

Digite o programa da listagem \ e com¬ 
pile com o comando CLIPPER MUSICA 
/L. Trata-se da música “Apanhei-te, 
cavaquinho!’', publicada originalmente na 
revista Micro Sistemas # 24, página 25. 
Ela servirá de exemplo para você ter uma 
idéia de como funciona a fiinçào PLAY. 

Tendo digitado a listagem 1, digite a 
listagem 2 que contém a funçào que irá 
interpretar os comandos da listagem 1. 
Compile com CLIPPER PLAY /L /N. 

Para gerar o arquivo EXE, digite 
RTLINK F1 MUSICA,PLAY (ou use o 
linkeditor de sua preferência). 

Execute o arquivo MUS1CA.EXE e 
ouça a música. 

Para utilizar a funçào em seus pro¬ 
gramas, inclua o arquivo PLAY.OBJ na 
geraçào do arquivo EXE. A sintaxe é a 
seguinte: PLAY ( cEXP ), onde cEXP 
representa uma seqüència de coman¬ 
dos, conforme a tabela seguinte. 

















Comandos 








Observações 

Nào foi incluída nenhuma rotina para tratamento de erros. 
Caso sua música nào seja executada corretamente, verifi¬ 
que a sintaxe. Tente tocá-la em partes para isolar o trecho 
que nào está tocando corretamente. 

Esta funçào foi testada nas versões 5.2 e 5.3 do CA-Clipper. 
Acredito que funcionará corretamente nas versões anteri¬ 
ores do Clipper, com poucas modificações. 


Marcos Antonio Ciam beta tem 2H anos e presta 
serviços para empresas desenvolvendo progra¬ 
mas em CA-Clipper. Os leitores que tiverem du¬ 
vidas sobre a funçào PLAY poderão contatar o 
autor pelo e-mail: brigido@sti.com.hr: 


Listagem 1; MUSICA.PRG 


* APANHEI -TE, CAVAQUINHO! 

* (CHORO) 

* ERNESTO NAZARETH - BALDONAM 

* PUBLICADO ORIGINALMENTE NA REVISTA MICRO SISTE¬ 
MAS N° 24 

* NO ARTIGO "DO, RE .... MICRO", DE THELMA V. T. 
FONTOURA. 


A**T 100; U6; 04; GFfEEDC# DF* EDCC ;03; BA«B; 04; EDC; 03; BBAG*A;04; DC; 03; BAAGF*G; OI :C; 

B=- EDCfDEFfGAB; 04; CCfDFfEDC ,03; AiB: 04; ED; P16; GFfEEDCfDFtEDCC; 03; BA*E; 04; EDC ;03; B* 
C='BAG»A; 04; DC; 03; BAAGFfG; 04; C; 03; BAGFfEDfEAGFHEEDC#DEF*GAE ; 04 ; CC#DD«EEt F*; L4; G; P16 " 
D='L16;03;B;L32;04;DjL16;C;03;BAiB;04;EF#Gj03jB;04;G;03;B;04;G;03;A«;04;CiF*F* 

;03 ;At;04; Ff ;03; A# ;04 ;G;03 ;AB;OI; F*Ft;03; A;04 jFf;03;A* 
E=*04;Ff;03;G8;04;E;P16;03;B;L32;04;D;U6jC:03;BAtB;04;EFfG;03;B;04;G}03;B;04; 
G;03;B;04 :Fi;03;B;04;E;03;B;04;D;03;B;04;D;03:EFf;04;CfE;03;E;04;Ci;03;E;04;C; 

03;Df F»B;P16;B;L32;04;D;L16;C;03;B* 

F 5t *WIB;04;EFfG;03;B, , 04}G;03;B:04 jG;03;A#;04;CfFfFf;03;Af ;04;Ff ;03;Ai;04;í5;03;A 
B;04;FfFt;03;A;04;Ff ;03;A;04;F;03;G#B;04;E;P16;L8;Df;L16;EF;03;A;04;E;03;A;04; 

D; 03; A; 04; C; 03; A* 

G=-04 ;C;03; BCB; P16; LB; A*;U6 ;B;OI ;C ;03; BA*B;04; EDfGF*; 14 ;E; P16' 

H=-04;L16;GFfGAGBC;03;AGEC;L8.;A;L16;A;P8;L8;A;P16;G;U6;AB;04;L8;C;L16;D;Le. 

;E;L16;E;Pfl;L8;E- 

I=* P16; U 6; EDf EFEDiECE; 03; B; 04; E; 03; A ;04; E; 03 j G j 04; E; P16; DCf DEDCfDED; 03; B; 04 :G; PI 6 

;GF*G* 

J=*AGK;03;AGEC;L8. ;AjL16;P9;L8;A;P16;G;L16;AB;Lflí04;C;L16;D;L8. ;E;Lló;E;P8;L8; 
E;P16;Df;L16;EFEDEíL8.;A;U6;A;P8;L0;A;P16;L16;GFD;O3;BGFD;L8.;C;O4;L16jC;P16* 

X=A*B*C 

y=H*i 

PLAY(X*X-»IHE*F*G+IHE*PK;*X*D*E»F*G+Y*J*Y*J*X*D*E*F*G) 

QOIT 


Listagem 2: PLAY.PRG 


FUNCTION PLAY 
PARAMETERS MUS 
LOCAL N,T,0,L,L2,P,A,X 
PRIVATE FREQ[84] 

FREQ[01]=32.69*2 
FREQ [02]=34.65*2 
FREQ[03]=36.71*2 
FREQ[04]=38.89^2 
FREQ[05]=41.20*2 
FREQ(06]=43.66*2 
FREQ[07]=46.24*2 
FREQ[08]=48.99*2 
FREQ[09)=51.90*2 
FREQ(10)=54.99*2 
FREQ[11]=58.26*2 
FREQ[12]=61.73*2 
FOR N=13 TO 84 
FREQ[N]=FREQ[N-12]*2 
NEXT N 
T=100 
0=4 
L=. 25 
L2=.25 
P=.25 
A=1 

MUS=UPPER(MUS) 

DO WHILE A<=LEN(MUS) 

IF SUBSTR(MUS,A,1)="T" 
A=A+1 
X="" 


13 


ê 



































DO WHILE SUBSTR(MUS,A,1)$"0123456789" 


A=A+1 

X=X+SUBSTR(MUS,A,1) 


ENDDO 

A=A+1 


TONE(0,256/T*18.2*P) 

ENDDO 


ENDIF 

T=VAL(X) 

• 


IF SUBSTR(MUS,A,1)$"CDEFGAB" 

IF T<32 


X=SUBSTR(MUS,A,1) 

T=32 


DO CASE 

ELSEIF T>255 


CASE X="C"; N=1 

T=255 


CASE X="D"; N=3 

ENDIF 


CASE X="E"? N=5 

ENDIF 


CASE X="F"; N=6 

IF SUBSTR(MUS,A,1) ="0" 


CASE X="G"? N=8 

A=A+1 


CASE X="A"; N=10 

IF SUBSTR (MUS,A,1)$"0123456" 


CASE X="B"; N=12 

0=VAL (SUBSTR(MUS,A,1)) 


ENDCASE 

A=A+1 


N=N+(0*12) 

ENDIF 


A=A+1 

ENDIF 


X=SUBSTR(MUS,A,1) 

IF SUBSTR(MUS,A,1)="<" 

0=0-1F(0> 0,1,0) 

A=A+1 

ENDIF 

IF SUBSTR(MUS,A,1)=">" 

0=0+IF (0<6,1,0) 

A=A+1 

ENDIF 

IF SUBSTR(MUS,A,1)="L" 

A=A+1 


DO CASE 

CASE X="#"? N=N+1? A=A+1 

CASE X="+"; N=N+1; A=A+1 

CASE X="-"; N=N-1; A=A+1 

ENDCASE 

X=L2 

DO WHILE SUBSTR (MUS,A,1)="." 

L2=L2+(X/2) 

A=A+1 

X="" 


ENDDO 

DO WHILE SUBSTR (MUS, A, 1) $"0123456789" 


TONE(FREQ[N],256/T*18.2*L2) 

X=X+SUBSTR(MUS,A,1) 


L2 = L 

A=A+1 


ENDIF 

ENDDO 


IF SUBSTR(MUS,A,1)="N" 

L=VAL(X) 


A=A+1 

IF L<1 


X="" 

L=1 


DO WHILE SUBSTR(MUS,A,1)$"0123456789" 

ELSEIF L>64 


X=X+SUBSTR(MUS,A,1) 

L=64 


A=A+1 

ENDIF 


ENDDO 

L=l/L 


N=VAL(X) 

li 

CN 


IF N<0 

DO WHILE SUBSTR (MUS, A, 1) =* . " 


N=0 

L2=L2+(L/2) 


ELSEIF N>84 

A=A+1 


N=84 

ENDDO 

v m 

ENDIF 

ENDIF 


I X=L2 

IF SUBSTR(MUS,A,1)="P" 


DO WHILE SUBSTR(MUS,A,1)="." 

A=A+1 


L2=L2+(X/2) 

X="" 


A=A+1 

DO WHILE SUBSTR(MUS,A,1)$"0123456789" 


ENDDO 

X=X+SUBSTR(MUS,A,1) 


IF N=0 

A=A+1 


TONE(0,256/T*18.2*L2) 

ENDDO 


ENDIF 

P=VAL(X) 


IF N#0 

IF P<1* 


TONE(FREQ[N),256/T*18.2*L2) 

P=1 


ENDIF 

ELSEIF P>64 


L2=L 

P=64 


ENDIF 

ENDIF 


IF SUBSTR(MUS,A,1)$" ;" 

P=l/P 


A=A-*-l 

X=P 


ENDIF 

DO WHILE SUBSTR(MUS,A,1)=-." 


ENDDO 

P=P+(X/2) 


RETURN NIL 



14 





















SiVúr U VM VI I li) dr lnf.iritiálkM 



ORACLE 

Persottal Oracle 7.3 e Power 

Objects 2.0 

José Antônio Ram a lho 
Makron Books 

Este livro introduz ao usuário nos conceitos 
básicos do banco de dados Oracle e gradativamente • 
vai apresentando os componentes, mostrando como 
criá-los e mantê-los usando as ferramentas gráficas 
do produto, como o Navigator. Como um guia de 
iniciação, a obra inclui uma introdução á linguagem 
SQL e PL/SQL da Oracle. O leitor aprenderá a criar 
Stored Procedures, Triggers e outros tópicos 
avançados de uma forma simples e objetiva. 

O livro inclui ainda, um guia de referência da 
linguagem Oracle Basic, usada pelo Power Objects 
para customização de sistemas. 


EXPANDINDO E 
ENVENENANDO O SEU PC 

Kris Jamsa 

Makron Books 

Livm essencial para qualquer pessoa que tenha 
um PC e seguindo as instruções passo a passo, 
queira acrescentar novo hardware, instalar 
qualquer software e maximizar a capacidade atuai 

Finalmente um texto que torna o hardware e o 
software do PC fáceis de entender. Cada liçào 
requer somente 5 ou 10 minutos do seu tempo e 
ajuda o usuário a poupar muito dinheiro. Você 
mesmo pode atualizar o seu PC. 

Para Windows 3.x e 95. 


Expandindo e 



15 















































RR7 GO 

Desvendando 
a Tecnologia 
do Pentium 

MMX . 


PonAndretti Barros 


E verdade que o Pentium MMX substituirá 
as placas de som, de vídeo e de modem ? 
Todos os aplicativos atuais vão se beneficiar 
com o Pentium MMX? 

Um Pentium MMX 166 é mais rápido do 
que um Pentium Clássico 200? 

Estas e outras questões são esclarecidas por 
Andretti Barros, autor de presente artigo. 


Outro dia estava conversando com 
um amigo, quando um assunto tomou 
evidência: A tecnologia MMX. Este me I 

disse que o Pentium MMX possuia ca¬ 
racterísticas de placa de video, de som 
e modem, e nào seria mais necessário i 

possuir estas placas separadas. 

Após esta conversa comecei a 
pesquisar sobre o assunto e descobri que 
infelizmente não é assim que a coisa fun¬ 
ciona. A tecnologia MMX é a inclusão 

de 57 novas instruções ao conjunto de 

« 

instruções do processador, mas somente 
programas que utilizem instruções 
MMX poderão se beneficiar destas van- I 

tagens (basicamente aumento de veloci- I 

dade). Então um programa não MMX 
nào se beneficiará de um processador 
MMX a nào ser por um fato: a Intel au¬ 
mentou o tamanho a memória cache in¬ 
terna do Pentium de 16 KB para 32 KB i 

no Pentium MMX. Isto faz com que um 
Pentium MMX seja mais rápido que um 
Pentium comum com o mesmo clock, 
mesmo nào usando programas MMX. 

Um Pentium MMX 166 consegue ser 
mais rápido até mesmo do que um 
Pentium 200 comum. 

Para programas MMX são muitas as 
vantagens. O Pentium MMX apresen¬ 
ta a maior revisão no conjunto de ins¬ 
trução dos processadores utilizados em 
PCs desde a criação do 386. 

Por razões de compatibilidade a Intel 
nào criou nenhum “modo de operação 
MMX”, nem adicionou flags ou fez 
qualquer mudança no núcleo do 
processador. A estrutura do processador 
MMX continua exatamente igual a de 
um Pentium comum (chamado agora 
de Pentium Clássico). Para que fossem 
desnecessárias alterações no núcleo do 
processador, o Pentium MMX utiliza 
os mesmos registradores do co- 
processador matemático. Desse modo, 
as chances de incompatibilidade nào 
existem e um programa pode executar 
instruções MMX sempre que desejar. 

Para um programa, executar instruções 
MMX é tão fácil quanto utilizar o co- 
processador matemático. 

As instruções MMX nào são comple¬ 
xas. São basicamente instruções de soma, 
subtração, multiplicação e comparação de 
bits. Coisas que o processador já fazia. 


16 




























AlR TIGO/L>esvendando a Tecnologia do Pentium MMY 


A novidade do MMX é que ele tra¬ 
balha com um novo conceito: SI MD 
(Single Instruction, Multiple Data - 
Instruções simples para múltiplos da¬ 
dos). Operações simples e de dados cur¬ 
tos podem ser feitas simultaneamente, 
o que acarreta grande ganho de tempo. 

Para exemplificar este conceito vamos 
pegar duas imagens gráficas e realizar a 
fúsào delas. Imagine uma foto sua e a de 
uma paisagem, e você deseja flindir as duas 
em uma só. Teoricamente fazer isto é mo¬ 
leza: basta somaras duas imagens, mas para 
o processador ó um pouco mais complexo. 

Profissionalmente vocc utiliza sua pla¬ 
ca de vídeo configurada a trabalharem RGB 
Tnie Color (24 bits por pixel) ou CMYK 
Tme Color (32 bits por pixel). No primeiro 
caso, cada ponto na tela é armazenado em 
uma variável de 24 bits, 8 bits para o com¬ 
ponente vermelho do ponto (R), 8 bits para 
o verde (G) e 8 bits para o azul (B). No 
segundo, cada ponto é amiazenado em uma 
variável de 32 bits. 8 bits para o ciano (C), 
8 bits para o magcnta (M), 8 bits para o 


amarelo (Y) e 8 bits para a intensidade (K). 
Cada ponto presente na tela é formado por 
um pouco de cada componente. 

Para o processador efetuar a soma das 
duas imagens ele terá que somar indivi¬ 
dualmente cada ponto, um a um. Porém 
nào basta somar os 32 ou 24 bits de cada 
ponto. Ele terá que somar individualmen¬ 
te o componente C, M, Y e K (ou R, G e 
B) de cada ponto. Para formar o primeiro 
ponto da imagem, o processador deverá 
efetuar a soma (este processo pode demo¬ 
rar um bocado): 


Você deve ter observado que cada 
soma individual nào é uma soma com¬ 
plexa de 32 ou 64 bits, sào somas de 
pequenos números de 8 bits. 

Cada registrador MMX comporta 64 bits 
que podem ser divididos em 8 grupos de 8 
bits, portanto, com uma só instrução MMX 


podemos somar dois pontos de duas ima¬ 
gens diretamente. Quando nào utilizamos 
esta instrução MMX, precisamos de 8 ins¬ 
truções para executar o mesmo processo. 

Processos de filtros, efeitos especiais, se¬ 
paração de cores e animações sào apenas al¬ 
guns exemplos práticos da rapidez trazidos 
pelas instruções MMX. Para os leitores te¬ 
rem uma idéia, o processo de fúsào de dias 
telas 640 x 480 pontos em RGB Tme Color 
usando instruções MMX utilizara I bilhão 
de instruções a menos em comparação ao 
sistema nào MMX atualmente utilizado. 


Andretti Barros cursa o /- per iodo de 
Ciências cia Computação na Universi¬ 
dade Federai do Rio Grande do Norte 
e disponibilizou apenas seu e-mail 
(andretti@lcc.ufrn.hr) para eventuais 
contatos. 


C (primeira imagem) + C (segunda imagem) = C (do ponto fundido) 
M (primeira imagem) + M (segunda imagem) = M (do ponto fundido) 
Y (primeira imagem) + Y (segunda imagem) = Y (do ponto fundido) 
K (primeira imagem) + K (segunda imagem) = K (do ponto fundido) 



FABRICAMOS CAPAS PARA TODA LINHA DE INFORMÁTICA 


^apas para telefones celulares nacionais e 
importados (em couro) 

Revenda com personalização: 

MOUSE PADS COM BASE DE ESPUMA LATEX. 

CONFECCIONAMOS CAPAS SOB MEDIDA E COM VÁRIOS TIPOS DE MATERIAIS. 

FA ÇA UM ORÇAMENTO SEM COMPROMISSO: 

TEL.: (041) 279-1206 























Caí no 
Mundo 


Por: Marcelo Zóchio 




Tomei conhecimento da rede (é as¬ 
sim que vou chamá-la) através da tele¬ 
visão. Filmes de espionagem, como 
“007", mostravam, através de algo bem 
parecido com a Internet, um universo 
de coisas que nós nunca sonhava-mos 
em existir, alguns deles desenvolviam 
toda uma trama em volta da rede, ou¬ 
tros a mostravam como principal arma 
de terroristas, que a usavam para entrar 
em projetos ultra-secretos das forças 
armadas, e assim roubar as plantas de 
armas super poderosas e desta forma 
conseguir conquistar o mundo..Depois 
a rede virou personagem de novelas, em 
uma delas acontecia um romance que 
durou praticamente toda a novela, onde 
o casal se conhecia e aprendia a se amar 
através do “cupido Internet", e esse tipo 
de coisa acontece mesmo na vida real. 
os tele-jomais já cansaram de mostrar 
depoimentos de pessoas que passaram 
por este tipo de situaçào. 


































Nesta matéria, vou tentar passar para 


vocês, as emoções que senti quando comecei 



a explorar a tão famosa e grandiosa rede 


chamada INTERNET”, e assim me tornei 


um internauta. 


Vendo todo este marketing em volta 
desta coisa que sempre pareceu fasci¬ 
nante, quem nào se sentiu curioso a 

participar dela? 

A primeira vez em que tive realmen¬ 
te um contato pessoal com a rede, foi 
no trabalho de um amigo. Quando en¬ 
trei em sua sala ele estava conectado a 
rede, entào eu sentei do seu lado e co¬ 
mecei a observar o que ele fazia, foi 
entào que ele entrou em um site de bate- 
papo, e começou a conversar com um 
montào de gente de tudo que é lugar, 
ele estava perguntando a elas quem te¬ 
ria um drive que ele precisava, e mes¬ 
mo as que nào tinham respondiam e 
puxavam papo, e desta forma ficamos 
conectados coisa de duas horas no mí¬ 
nimo, é claro que a uma certa altura, eu 
nào resisti e pedi para conversar tam¬ 
bém, é incrível a quantidade de amigos, 
dos quais provavelmente 99% você 
nuca vai conhecer, você faz. Gente de 
tudo o que é tipo, e é um vai-e-vem de 
imagens, arquivos, e-mail, etc. que um 
manda para o outro. Me senti perdido 
no espaço, perdi por completo a noçào 
do tempo, só me dei conta da hora quan¬ 
do uma ligaçào em outra linha foi envi- 


t 



> 


18 











,4 R T! Cr O / C V// no JVÍu niio 



as home-pages em relaçào aos jor¬ 
nais e revistas. 


ada para nós, mas até isso acontecer, 
eu já tinha viajado por meio mundo, 
conversado com metade da população 
mundial, ou pelo menos era assim que 
eu me sentia. Depois deste dia eu co¬ 
mecei a frcqüentar a rede, não com 
muita freqüència, pois ainda não tinha 
a minha inscrição em um provedor, e 
só podia “viajar" pela rede quando ti¬ 
nha algum tempo no trabalho. 

A verdade é que quando você esta 
conversando com alguém pela 
internet, não é a mesma coisa que con¬ 
versar pelo telefone como alguns ima¬ 
ginam, é diferente, você nunca viu 
aquela pessoa e derrepente está ali 
conversando com ela, trocando infor¬ 
mações. Assim também acontece com 


Com o tempo me tornei 
mais um intemauta, não 
cheguei a pegar aquela 
febre de internet, talvez 
porque não podia estar 
toda hora nela, mas co¬ 
mecei a perceber que a 
rede não foi criada ape¬ 
nas para diversão, e como ela co¬ 
meçou a ser importante para o meu 
trabalho. Com ela pude fazer pes¬ 
quisas para desenvolver certos tra¬ 
balhos, e nas horas vagas viajava um 
pouco por alguns dos centenas de 
sites que existem na rede, e adquiri 
preferência por alguns, dos quais fre- 
qüento até hoje. 

0 

E impressionante 
a quantidade de coi¬ 
sas contidas dentro 
da rede, qualquer assun¬ 
to que você imaginar, é 
só escrever o nome lá no 
“Search" do programa que você 
usa para navegar e pronto, ela irá 
lhe mostrar uma série de ende¬ 
reços no mundo inteiro nos 



quais você poderá encontrar aquilo 
que você procura. 

Isso sem contar com a comodidade 
que tive quando me vi na necessidade de 
mandar um arquivo de trabalho para um 
cliente e não tinha como ir nem mandar 
ninguém lá. Então apenas peguei o seu 
e-mail e mandei o meu arquivo via 
internet. Simples, prático e rápido. 

Se você ainda não conheceu real¬ 
mente a rede, vá em frente e de um jei¬ 
to de conhecer, assim como eu e todos 
aqueles que já a conhecem, você tam¬ 
bém vai ficar surpreso com a quantida¬ 
de de informações que ela tem para te 
oferecer. 

# 

Marcelo Zôchio è diretor da revista 
Micro Sistemas . 



• / 


ANUNCIE AQUI 

4,5 X 18 cm 
APENAS R$ 100,00 

Informações pelo telefone(021)589-2088 




19 












Dê uma chance ao sucesso 




Se você passou horas ou dias, ou por acaso descobriu aquela super-dicu sobre uma rotina de uma lingua¬ 
gem de programação, ou sobre a Internet, a Multimídea, o Windows, o OS2 ou o DOS, ou sobre uiul 


planilha, tf*//tor de texto, gerenciador de banco de dados, ou editor gráfico que você usa com frequência, tf 


portanto, domina, divulgue seu conhecimento pela Micro Sistemas. 



<///tf í/Artf espaço para trabalhos feitos no Brasil, por leitores e para leitores. f.vta tf a pricipal razão do 
sucesso imbativel da revista. Afinai grande parte dos profissionais com projeção neste mercado, foram ou 


ainda são colaboradores da Micro Sistemas. 


O que você esta esperando para fazer parte deste tinte? 


Para que seu trabalho (artigo, crônicas, curso, dicas, programas, rotinas, etc) seja avaliado por nossa 

equipe é imprescindível que: 


- A matéria venha impressa (texto e figuras) e também gravada em disquete; 

• . 

- Aà figurai sejam gravadas separadamente: 

Os programas e as rotinas venham com uma versão compilada com exemplos; 

- O disquete seja padrão IBM PC (disco 5 1/4 " ou 3 1/2 

- O texto seja em formato Word for Windows. 



Se aprovada por nossa equipe,a matéria só será publicada se acompanhada de autorização do autor . A 


autorização é dada quando o autor define o texto de fechamento da matéria, ou seja, nome, endereço, e 


reduzido histórico de suas atividades. Sempre indicar se deseja a publicação de dados pessoais, tais como, 

telefone, caixa postal, nome da empresa, e-mail, etc. 


O material enviado para a revista não será devolvido. 


Os autores das matérias publicadas, além de estarem divulgando conhecimento para milhares de leitores, 
receberão inteiramente grátis uma assinatura anual de Micro Sistemas, ou um pagamento 

simbólico, por matéria publicada a titulo de agradecimento. 


Enviar o material para: 


Caixa Postal 18347 , CEP: 20722-970,RJ - RJ 


REVISTA MICRO SISTEMAS 


TEL/FAX: (021)261-7841 ( DAS 9 ,00 ÂS 17,00 HS) 

I * . * 


Tel. (021)532-0770 cod. 4016779 




















RRTIGO 

Alterando o 
Menu de 

^ ^ B B B V 9 mP b wÊ 9 B 9 B 9 9 9 W 9 O U u 

Contexto do 

Windows 9 5 

com o 

Visual Basic 


Por: Disnei Rocha Bernardo 


Aprenda com Disnei Rocha Bernardo a 
mudar o Menu de Contexto do H’indo\\s95 

1 

usando o Usual Basic. 


O Visual Basic nas versões de 32 
bits - 4 e 5 tem algumas características 
surpreendentes, que muitas vezes nào 
sào adequadamente exploradas. Entre 
elas, citamos o uso das funções da API 
do WIN32, que muitas vezes nào sào 
utilizadas por falta de conhecimento 
por parte dos programadores acerca do 
poder destas funções e também de 
como usá-las. 



hçativo 
jgem de Bdn 


agern de Bitn 
agem de Bitn 
agem de Bi*n 


Por exemplo usando apenas o Visual 
Basic, podemos alterar o menu de con¬ 
texto para um tipo de arquivo do 
Windows 95 - os arquivos de Bitmap, 
que tem a extensào BMP, colocando ao 
lado das já existentes a opçào “Usar 
como Papel de Parede", sem precisar 
abrir o Paint. 

Assim, ao pressionar 0 botào direi¬ 
to do Mouse sobre qualquer arquivo 
que tenha a extensào BMP, você pode¬ 
rá usá-lo como papel de parede, imedi¬ 
atamente. 

Para acrescentar esta funcionalidade 
ao Windows95, siga os passos.a seguir: 

Abra o Visual Basic (4 ou 5). 

Ao iniciar o projeto, remova o form 1, que 
foi criado como default. 

Insira um novo módulo (BAS). 

Digite a listagem a seguir, salve e 
gere um executável, com a opçào 
MAKEEXE. 

Salve-o no diretório C:\Windows com 
o nome de SetWallPaper.exe 











































<t 77 CmCJ / sí/tcrrando Mc*nu 






=== Listagem 1 ============================ • Sal ve-a com qualquer nome, mas com a extensão. REG (sem 

. isto não funciona). 


Dê um duplo clique sobre o icone do arquivo 
REG. Isto faz o Windows executá-lo. Se você 
digitou corretamente, receberá uma mensagem 
dizendo que as informações foram gravadas no 
registro. 

Agora é só abrir o Explorere clicar com o botão 
direito sobre qualquer arquivo de Bitmap e ver o 
resultado. 


Atenção para o fato de que a linha com o declare function deve 
ser digitada em uma única tinha. 

Não tente executar o programa diretamente, ele não funcionará. 
A seguir entre no bloco de notas, e digite a listagem seguinte: 

=== Listagem 2 ============================ 


Disnei Rocha Bernardo c analista 
programador, atualmente na 
Equitel. trabalha com Visual Basic 
e SQL-SERI ER 


MIC ROSOFT EXCEL 

passo A PASSO 


Microsoft Press 
Makron Books 

Com este livro e com o Microsoft Excel 97, você aprenderá a: 

- Lançar e formatar seus dados e escrever fórmulas. 

- Criar um modelo para agilizar seu trabalho. 

- Disponibilizar suas próprias planilhas na Internet ou 
Intranets com o Microsoft FrontPage. 

- Administrar suas tarefas com a ajuda do Microsoft Outlook. 

- Consolidar dados de várias planilhas em uma única. 

- Localizar e organizar informações , filtrando 
classificando e subtotalizando. 

- Resumir e analizar dados utilizando a visualização das 
tabelas dinâmicas. 

- Utilizar gráficos /xtra visualizar tendências e relacionamentos. 

- Trabalhar com outras pessoas simultaneamente , 
compartilhando uma pasta através da Intranet de sua 
empresa. 

22 


Gola PrMtco de Auto Aprendizado 



tl 


MAKRON fioolt 


Microsoft Press 



\ 




REGEDIT4 

[HKEY_CLASSES_ROOT\Paint.Picture\shell\Usar_como_Papel_de_Parede] 
"EditFlags"=hex:01,00,00,00 
«=*Usar como Papel de Parede" 

(HKEY_CLASSES_ROOT\Paint.PicturcVshcll\Usar_como_Papcl_de_Parede\command] 

«=*C:\\WINDOWS\\SetWal1 Paper.exe %1" 















































Por: Marcus Fúlvio 






Muitas vezes, lendo fontes de 
programas diversos, aprendia algu¬ 
ma coisa que me era útil aplicado 
em outros programas ou rotinas. Vi 
muitos colaboradores enviarem 
exemplos em Clipper com diferen¬ 
tes formas de identaçào e docu¬ 
mentação, o que prova que a 
criatividade/inspiração influi dire¬ 
tamente na forma de montarmos 
nossos programas. 

Sendo assim, a listagem do progra¬ 
ma “Relógio Digital" pode trazer a 
você uma luz para a solução de al¬ 
gum programa que objetive um resul¬ 
tado nada relacionado com este pro¬ 
grama. De experiência própria posso 
dizer isto. Já aproveitei muitos tre¬ 
chos de alguns programas listados 
aqui para soluções que não se relaci¬ 
onavam às do programa em questão. 
Acho bastante produtiva a leitura de 
códigos alheios. 

O programa Relógio Digital lê 

cada dígito da hora atual, e de acor¬ 
do com valor encontrado um outro 
valor ê dado às variáveis x I, x2. x3, 
x4, x5. O programa é executado até 
que se tecle ESC. 

Pode-se integrar este programa a 
um sistema, tornando-o uma 
procedure, e indicando-se uma tecla 
de função para acionar esta procedure 
(SET KEY) transformamos o mesmo 
em descanso de tela. Incrcmentando- 
o como desejar. 


Para aqueles que gostam de programar em 
Clipper Marcus Fúlvio apresenta neste 
artigo um programa muito interessante, 
trata-se de um relógio digital simples, 
porém de muita precisão. 


Marcus Fúlvio Machado tem 21 

anos, è instrutor de Informática, 
funcionário da Digitron Informᬠ
tica em Sáo Joào Del Rey, trabalha 
a sete anos com informática. 2" grau 
completo, autodidata em (Windo¬ 
ws 3. 11 e 95. Word. Excel, Power 
Point, Clipper. MS-DOS). 

End. Com.: Rua Ge tá lio Vargas , 125 
e 135 - Centro. 

Sáo Joào Del Rey, MG. CEP: 36300-000. 
Fone/Fax: (032) 37I-/II9 
e-rnail: digitron@mgconecta. com.hr 


23 


























ARTIGO / 


Relágia Digital ent Clipper 


Listagem: 


* Relogio Digital * clock.prg 

* Setembro 1997. 

* M. F. Machado 

* compilacao: Clipper clock 

* linkedicao: rtlink fi clock 

***♦*+★*********+*+******** 

set curs off 
clea 

set proc to clock 

publ t,e,m,p,o,s,xl,x2,x3,x4,x5 

set colo to r 

@0,0 to 24,79 doub 

set colo to b+ 

@3,6 to 20,72 
set colo to gr+ 

@11,30 say "#" 

@13,30 say "#" 

@11,49 say 
@13,49 say "#" 
set colo to g 
do while inke()#(27) 

t:=subs(time O,1,1) 
e:=subs(time(),2,1) 
m:=subs(time(),4,1) 
p:=subs(time(),5,1) 
o:=subs(time(),7,1) 
s:=subs (time() , 8,1) 
y=val(t) 

do numero /*busca o primeiro digito da hora*/ 
@10,14 say xl 
@11,14 say x2 
@12,14 say x3 
@13,14 say x4 
@14,14 say x5 
y=val(e) 

do numero /*busca o segundo digito da hora*/ 
@10,22 say xl 
@11,22 say x2 
@12,22 say x3 
@13,22 say x4 
@14,22 say x5 
y=val (m) 

do numero /*busca o primeiro digito do minuto*/ 
•10,33 say xl 
@11,33 say x2 
@12,33 say x3 
@13,33 say x4 
@14,33 say x5 
y=val(p) 

do numero /*busca o segundo digito do minuto*/ 
@10,41 say xl 
@11,41 say x2 
@12,41 say x3 
@13,41 say x4 
@14,41 say x5 
y=val(o) 

do numero /*busca o primeiro digito do segundo*/ 
@10,52 say xl 
@11,52 say x2 
@12,52 say x3 
@13,52 say x4 
@14,52 say x5 
y=val(s) 

do numero /‘busca o segundo digito do segundo*/ 
@10,60 say xl 
@11,60 say x2 
@12,60 say x3 
@13,60 say x4 


@14,60 

say x5 



enddo 

set curs 

off 



* Procedure Numero 



******** 

********** 



proc numero 



do case 




case 

y=l 




xl=" 000 * 


• 


x2=" 000 * 




x3=" 000 - 
x4=" OOO * 

x5=" OOO - 



case 

y=2 

xl= w OOOOO" 
x2=" 

x3="00000" 
x4="00 

00" 



x5="00000" 



case 

y=3 

xl="00000" 
x2=" 

OO" 



x3="00000" 
x4=" 

00" 



x5="00000" 



case 

y=4 

xl="0 

0 " 



x2="0 

0" 

♦ 


x3="00000" 
x4=" 

OO" 



x5=" 

00" 


case 

y=5 

xl="00000" 

x2="00 




x3="00000" 

/ 

\ 


x4=" 

00" 


x5="OOOOO" 



case 

y=3 




xl="OOOOO" 
x2="00 
x3="OOOOO" 
x4=*00 OO" 

## 



x5="OOOOO" 



case 

y=3 




xl="OOOOO" 




x2=" 

00" 

• '• 


x3=" 

OO" 



x4=" 

00" 



x5=" 

OO" 

1 


case 

y=3 




xl="OOOOO" 
x2="0 

0" 



x3="OOOOO" 
x4="0 

0" 



x5="OOOOO" 



case 

y=3 

xl="OOOOO" 
x2="0 

0" 

HM#! 


x3="OOOOO" 
x4=" 

0 " 



x5="OOOOO" 



case 

y=0 




xl="OOOOO" 
x2="0 

0" 

# 


x3="0 

0" 

• 

• 


x4="0 

0" 



x5="OOOOO" 



endease 



• 






























RE TROPROPA GA ÇÃ O 



Por: Carlos A Thompson, Ph.D 




Comentários 

1. O algoritmo de retropropagaçào nem 
sempre converge; 

2. Rede muito complexa perde a ca¬ 
pacidade dc generalização ( rede ri- 
gida ) e implica em um menor núme¬ 
ro de iterações para atingir a preci¬ 
são ( acurácia ) desejada; 

« 

3. Rede menos complexa, ao contrário, 
aumenta a capacidade de generalização 
( rede menos rígida ) e implica em um 
maior número de iterações para atingira 
precisão ( acurácia ) desejada; 

4. Erro é a diferença entre o desempe¬ 
nho desejado e o obtido na(s) saida(s) 
da Rede Neural Artificial (RNA); 

5. O aprendizado do sistema é reali¬ 
zado por amostras ou padrões ( en¬ 
trada m , saida desejada m ), onde I £ 
m £ p. Esses padrões provocam mu¬ 
danças nos parâmetros w ( pesos ) do 
sistema. Se o número total de amos¬ 
tras for N, pode-se fixar p £ N e calcu¬ 
lar o peso ótimo para cada 
subconjunto p de N. Existirão aproxi- 
madamente N / p ( se possível, esco¬ 
lher N e p de modo que sejam múlti¬ 
plos ) valores ótimos de cada w do 
sistema. Outra forma de aprendizado 
é caso ainda mais restrito onde p = 1. 
Neste caso, a dimensão de cada vetor 
coluna w do sistema é ( Nx I); 

6. Tenha sempre em mente: a leitura é 
rápida e o aprendizado é lento; 

7. Projeto de RNAs ( modelagem flexí¬ 
vel devido as complexas interrelaçòes 
entre os parâmetros que influenciam a 
eficiência da rede). 




Danilo prosseguimento ao artigo anterior 
sobre Redes Neurais Artificiais, novos 


7.1 Avaliação da Eficiência dc uma 
RN A ( Pós-Processamento ) 

Após o conjunto de treinamento (vetores 
entrada / saida desejada ou só entrada ) e 
o de testes (após o treinamento), três 
fatores são analisados para a avaliação 
da RN A: 


conceitos fundamentais são introduzidos 
para a implementação computacional. 


a) Convergência; 

b) Acurácia (*); 

c) Flexibilidade(*); 

















/f 7 /G Cy / Redes IWeurais Artificiais 


(*) quanto mais (complexa ) rápido for 
o processo para sc atingir a acurácia, 
menor a generalização ( flexibilidade) 
ou, em outras palavras, maior a rigidez 
( grande número de conexões ou pesos 
a serem otimizados). 

Obs. Um processo interativcçpode converejr 
para um valor indesejado. A acurada está rela¬ 
cionada à convergência para um valor deseja¬ 
do dentro de uma análise estatística digital. 

7.2 Controle da Eficiência de 
RNAs ( Pré e Pós-Processamento 
dos Dados ) 

No período de treinamento e de testes, 
diversos fatores sào de capital importância 
para o controle da eficiência de uma RN A: 

a) Função básica (hiperplanos, 
hiperes-feras, etc., ); 

b) Função de tranferência ou de ativa¬ 
ção ( porteira, rampa, sigmóide, tangen¬ 
te hiperbólica ou bipolares, aumento do 
quadrado, “squash ing” ). 

Obs. A sigmóide é um caso particular 
da função “squash ing” ( a=(); b=l), 


Na função “squash ing” os parâmetros a.b 
e c e a variável independente v pertencem 
ao conjunto dos reais. Particularmente, os 
parâmetros b c c não podem ser nulos. Note 
que o parâmetro c é o único que influencia 
na inclinação de f (v). Este parâmetro tem 
pouca influência na magnitude da função, 
ao contrário dos outros dois a e b. Quando 
sào usadas camadas intermediárias, pode- 
se empregar sigmóide ou tangente 
hiperbólica c funções lineares na saída. 


c) Característica dos dados de entrada 
e de saída desejada: pré-processamento 

Dependendo de suas características, os da¬ 
dos de entrada c os de saída desejada, se 
não sofrerem um pré- processamento, po¬ 
dem acarretar um completo iasucesso nos 
objetivos do projeto de uma RN A. Por ou¬ 
tro lado, um mal tratamento nesses dados, 
também pode influir de maneira desastro¬ 
sa na eficiência do sistema. Assim, um pré- 
processamento adequado implica na ex¬ 
clusão de certos parâmetros intrísecos aos 
dados de entrada não acarretando, por via 
de consequência, significantes diferenças 
nos resultados descjados.da RN A. Entre os 
vários pré-processamentos, destacam-se: 

c I) Conjunto de dados com elevadas 

amplitudes 

Observe que amplitudes elevadas 
podem levar os neurônios não lineares 
à saturação inibindo o treinamento. A 
função sigmóide, por exemplo, para ele¬ 
vados valores de v, f(v) é sempre I e a 
sua derivada, muito próxima de zero. 
Neste caso, considere: 

i) Filtragem do sinal com elevada am¬ 
plitude e freqüência nula. Este 

processamento é adequado somente 

•• 

quando o espectro for constituído 
de sinais com baixas freqüéncias e 
pequenas amplitudes ( exceto na fre¬ 
qüência nula onde a amplitude é ele¬ 
vada ). Neste caso a informação rele¬ 
vante deve ser as pequenas varia¬ 
ções que se encontram adicionadas a 
um valor elevado correspondente à 
freqüência nula; 

ii) Grandes variações nas amplitudes 
dos sinais. Neste caso, é aconselhável 
que se divida cada elemento do vetor 
de entrada pelo desvio padrão obtido 
com o total de componentes; 


iii) Emprega-se um linearizador (logaritmo 
de cada componente ou eleva-se cada com¬ 
ponente a um expoente fracionário ou ele¬ 
va-se um número a cada elemento do vetor) 
quando ocoiTcmm elevadíssimas variações 
nas amplitudes dos dados. Neste caso a in¬ 
formação relevante deve ser a variação 
percentual que é conservada após o 
processamento; 

c2) Conjunto de dados com pequenas 
variações absolutas das amplitudes. 
Neste caso emprega-se a derivada nu¬ 
mérica, para ampliar as pequenas vari¬ 
ações que deve ser a informação rele¬ 
vante para o treinamento e os testes. 

d) Otimização da função erro para todas 

as n saidas e para os p padrões 

# 

A função erro, para um valor fixo da 
saída desejada d (i,m), depende da vari¬ 
ável saida real y (i,m) da rede. Por ou¬ 
tro lado y (i.m) depende da variável’v 
(i.m) que por sua vez está relacionada á 
entrada e ao peso w. Pode-se concluir 
que o erro é uma função dos pesos w. 

e (i,m) = f (w) 

O valor da variável peso w pode ser 
obtido pela função soma dos quadrados, 

E = ÈZl d ( | 'M)-X«.M)| J 

i«i i!-F 

O valor ótimo de w pode ser calcu¬ 
lado, iterativamente, pelo método do 
gradiente descendente que será comen¬ 
tado em outro artigo. 

Dr. Carlos Thompson é Prof Titular do 
Centro Universitário Augusto Moita. 
Ph.D pela Universidade de Houston, 
USA e Prof. da Universidade Federal 
Fluminense no curso de Mestrado, 
e-mail: cthotnpson @openlin k. com . hr 


í 

( 


ê 


I 

I 


ANUNCIE AQUI 

4,5 X 18 cm 
APENAS R$ 100,00 

Informações pelo telefone(021)589-2088 












disquete = ASMwin + Bitmap + ASM 86 + TILT online 

^ A PRO KIT juntou todas as suas produções edito rias numa 
única série: a TILT disquete. Agora ficou muito mais fácil 

^ r—* r-*% 1 ^ 

Ur EH aprender os truques e segredos da programação for Windows 


NOVIDADE 

DA 

PRO KIT 


e da criação e arte no computador. Veja só o resultado: 


ProgramaçãoDELPHI 


líV* 

■L-. 


Dicas, programas, funções, procedures e muito mais. Tudo escrito de uma 
forma simples e fácil de compreender. Aqui você aprenderá como criar anima¬ 
ção e jogos. 


Artes & Efeitos 




As mais quentes matérias da série Bitmap: efeitos especiais, criação artística, 
dicas de animação e edição gráfica. 


Já estão 
disponíveis: 


Assembler for Windows 


wl\. 


disco 0. 
disco 1. 
disco 2. 
disco 3. 
disco 4. 


..R$ 5,70 [ ] 
..R$ 5,70 [ ] 
..R$ 5,70 [ ] 

..R$5,701 ] 
..R$ 5,70 [ ] 


A TILT disquete é a única revista onde você pode realmente aprender os 
segredos da programação Assembler, começando desde os conceitos 
básicos do computador indo até programas completos. 


Jogos & Aventuras 


Nenhuma outra revista apresenta fontes de jogos, criados aqui mesmo no 
Brasil. São jogos de todos os tipos, desde os mais simples jogos de reflexo 
até os sofisticados Adventures. 



OBS: Se você tem algum disco da série ASMwin, ao fazer um pedido, 
disco 5...H$ 5,70 / J envie-nos o disquete que ele valerá uma TILT disquete inteiramente grátis. 

Visite a TILT Online: http://www.orlatec.com.br/prokit/tilt.htm 


OUTROS PRODUTOS DA PRO KIT 


COMO FAZER O PEDIDO 


[ jSistema EDITOR de Livro de Aventuras (win)... R$14,70 
[ jAmazônia (dos/cdrom)... R$25,00 
[ jAmazônia (win/disquetes 31/2... R$14,70 
[ jCurso completo de Assembler (dos/disquete 31/2)...R$ 98,00 
[ jGraphos 111+Topview (dos/disquete 3 1 /2)...R$ 35,00 

PRO KIT Informática 

Caixa Postal 76 - Orlândia / SP 
cep 14620-000 fax(016)726 6820 


# Envie cheque nominal à PRO KIT Informática, por carta. Proteja bem o cheque, 
envolvendo-o em papel opaco. Nos pedidos acima de R$50,00use carta registrada 
para maior segurança. 

# Depósito bancário em contacorrente BRADESCO, agênda3176-3conta077270- 
4, nominal a Renato Degiovani. Envie o comprovante do depósito por carta ou fax. 

nome:_ 

endereço:_ 

cidade:_Uf:_ 

cep:_data:_ 

Cheque Número:_Valor R$_ 



















Por: Marco Antônio de Araújo Paiva 


Necessidade de Proteção da 
Informação 

Um dos maiores problemas enfren¬ 
tados por pessoas ligadas à área de 
informática, é a violação de seus arqui¬ 
vos (programas ou dados) por intrusos. 
Foi pensando numa solução que desen¬ 
volvi, crypt, um programa para 
criptografar arquivos. 

Funcionamento do Programa 

O programa funciona da seguinte 
maneira: no prompt do DOS, chama-se 
crypt com a opção E ou D, para 
criptografar ou remover a criptografia 
de um arquivo seguido pelo nome do 
mesmo. 

Ao ser inicializado com a opção E, 
o programa verificará se o arquivo já 
está criptografado, finalizando-o em 
seguida. Caso contrário, lhe será soli¬ 
citado uma senha, seguindo com a 
criptografia. 

Ao ser inicializado com a opção D, 
o programa verificará se o arquivo não 
está criptografado, finalizando-o em 
seguida. Caso contrário, lhe será soli¬ 
citado a senha, seguindo ou finalizan¬ 
do-o se a senha estiver correta. 


ê 

Supondo que você tenha criado uma pasta (diretório) no disco do drive A com o 
nome de PROV. Naquela pasta existe um arquivo hitmap com o nome dragon.bmp. 
Para criptografar o arquivo dragon.bmp, use a linha de comando: 
crypt -e a:\prov\dragon.bmp e 


Descrição dos Módulos do Programa 

Crypt foi desenvolvido em lingua¬ 
gem C, sendo composto de sete 
módulos: 


uma senha 

Para recuperar dragon.bmp, use a linha 
de comando: 

crypt -da: \prov\dragon.bmp e a senha 


correta 


Para criptografar ou recuperar o arquivo 
exemplo.doc: 

crypt -e a:\exemplo.doc ou 
crypt -d exemplo.doc. 

Como o leitor pode observar, crvpt.exe 
manipula bits e portanto criptografa 
arquivos bmp ou doc. 


















































/? TI G O X Programa em C p/ Criptografia de A rquivos 


Main: emite mensagens informando 
sua utilização, modo de uso e autor, 
bem como a chamada aos procedi¬ 
mentos para o processamento do pro¬ 
grama. 

Sair e Arq_Close: ambos fecham o ar¬ 
quivo manipulado e remove o temporário. 

Le_Senha: faz a leitura da senha usada 
no programa, sem ecoá-la na tela. 

Abre_Arq_Enc e Abre_Arq_Dec: 

abrem os arquivos necessários ao 
processamento do programa e ambos 
verificam se os parâmetros fornecidos 

AlU 

na linha de comando e o estado do ar¬ 
quivo permitem o prosseguimento do 
programa. 

Arq_Encode e Arq_Decode: 

criptografam e removem a criptografia 
do arquivo, sendo manipulação de bits 
do mesmo. 


Observações 

1.0 programa foi desenvolvido em 
Turbo C++, mas pode ser compilado em 
qualquer compilador C ou C++ com a 
devida correção em le_senha que usa a 
função getch, ara ler um caracter do 
teclado sem ecoá-lo na tela. 

2. Pode-se converter facilmente crypt 
para outra linguagem, tal como Delphi, 
Visual Basic, dentre outras. 

3. Crypt criptografa tanto arquivos bi¬ 
nários, como arquivos no formato 
ASCII. 

4. Com a publicação deste artigo a parte 
do programa que criptografa e recupera 
o arquivo deverá ser modificada para 
evitar que um programa feito por tercei¬ 
ros recupere o arquivo criptografado. 
Como sugestão deve-se alterar a mani¬ 
pulação de bits do arquivo. 


Espero que com este artigo possa 
ter contribuído para dificultar que 
intrusos possam violar arquivos 
confidenciais. 

O Programa 

A seguir está a listagem completa do 
programa. Os comentários foram eli¬ 
minados para reduzir o tamanho da 
listagem. Apesar disso, o entendimen¬ 
to do programa não será dificultado, 
pois não usei expressões complexas, 
nem vários comandos em linha. 


<9 

Eventuais contatos com Maivo Antô¬ 
nio de Araújo Paiva podem ser feitos 
pelo endereço: 

Rua General Clark, 960 - 

Novo Progresso - Contagem/ 
MG - CEP 32115-140. 


= Listagem = 

#include "conio.h" 

#include "stdlib.h" 

#include "stdio.h" 

#include "string.h" 

typedef unsigned char byte; 
int const maxbuf = 24576; 

void sair(const char *arqd, FILE **orig, FILE 
**dest); 

void le_senha(byte **prim, byte **seg); 

void abre_arq_enc(byte *prim, byte *seg, const 

char *arqm, const char *arqd, FILE **orig, 

FILE **dest); 

void abre_arq_dec(byte *prim, byte *seg, const 
char *arqm, const char *arqd, FILE **orig, 

FILE ♦*dest); 

void arq_encode(const char *arqd, FILE *orig, 

FILE *dest, byte prim, byte seg); 

void arq_decode(const char *arqd, FILE *orig, 

FILE *dest, byte prim, byte seg); 

void arq_close(const char *arqm, const char 

♦arqd, FILE **orig, FILE **dest); 

int main(int arge, char *argv(]){ 

FILE *orig=NULL, *dest=NULL; 
byte prim, seg; 

char *q, arqd[120]="\0", *p=arqd; 
if(arge1=3){ 

printf("\n SINTAXE : Crypt (-E ou *D) 
nome_do_arquivo \n*); 
exit(0); 

) 


strcpy(arqd, argv[2]); 

if ((Mq=strrchr(p,92))=92) 11 (* (q=strrchr(p,' :'))==':')) 

p=++q; 

*P='\0'? 

strcat(arqd, *$$$$$.$$$*); 

if((!stremp(argv[1], "- 
e”)) || (!strcmp(argv[1], *-E*)))( 

// le_senha(&prim, &seg); 

abre_arq_enc(&prim, &seg, argv[2], arqd, 
&orig, &dest); 

arq_encode(arqd, orig, dest, prim, seg); 
arq_close(argv[2], arqd, &orig, &dest); 
return 0; 

I 

if((!stremp(argv [1], •• 
d"))||(!stremp(argv[1], "-D*))){ 

// le_senha(&prim, &seg); 

abre_arq_dec(&prim, &seg, argv(2], arqd, 
&orig, &dest); 

arq_decode(arqd, orig, dest/ prim, seg); 
arq_close(argv(2], arqd, &orig, &dest); 
return 0; 

) 

printf("\n SINTAXE : Cripty (-E ou -D) 
nome_do_arquivo \n"); 
return 0; 

) 

void sair(const char *arqd, FILE **orig, FILE 
**dest){ 
fclose(*orig); 
fclose(*dest); 
remove(arqd); 
exit(0); 


29 













sARTI (7O / Programa em Cp/ Criptografia de Arquivos 


} 

void le_senha(byte **prim, byte **seg) { 

char senha[120]; 
int i, len; 
char ch; 

**prim='/O•; 

♦♦seg='/O•; 

printf(" \n Password: ") ; 
for (i=0; ; i++) { 
ch = getchO; 
if(ch==13) 

{senha[i]='\0 ' ; break; } 
putchar('#'); 
senha[i]=ch; 

} 

len=strlen(senha); 

for(i=0;i<strlen(senha);i++){ 

♦*prlm=**prim + (senha [i] * (i+1)); 
**seg=**seg + (senha[i] * len); 
len—; 

} 

printf( "\n "); 

} 

void abre_arq_enc(byte *prim, byte *seg, const 
char *arqm, const char *arqd, FILE **orig, 

FILE **dest){ 

byte sts[6]="CRYPT"; byte buffer[7]; 

if((♦orig=fopen(arqm # "rb"))== NULL){ 
printf( M \n Arquivo nao encontrado \n" ) ; 
exit(0); 

) . 

le_senha(&prim, &seg); 

if(fread(buffer, sizeof(byte), 5, *orig)!=5){ 
if(!feof(♦orig)){ 

printf("\n Erro de leitura \n "); 
fclose(*orig); 
exit(0) ; 

} 

} 

if(!strncmp(buffer, sts, 5)){ 

printf("\n Arquivo ja bloqueado \n"); 
fclose(*orig); 
exit(0) ; 

} 

if ( (* dest—fopjsn (arqd, M wb" ) ) ==NULL) { 
printf("\n Impossivel abrir arquivo 
provisorio \n w ); 

fclose(*orig); 
exit(0); 

) 

if(fwrite(sts,sizeof(byte),5,*dest)!=5){ 
printf( M \n Erro de escrita ou disco cheio 
\n*) ; 

sair(arqd, orig, dest); 

} 

if(fwrite(prim,sizeof(byte),1> *dest) !=1) { 
printf("\n Errode escrita ou disco cheio 
\n”) ; 

sair(arqd, orig, dest); 

} 

if(fwrite(seg,sizeof(byte),1,*dest)!=1){ 
printf("\n Erro de escrita ou disco cheio 
\n") ; 


sair(arqd, orig, dest); 

} 

if(fflush(*dest)==EOF){ 

printf("\n Erro de escrita ou disco cheio 
\n") ; 

sair(arqd, orig, dest); 

} 

} 

void abre_arq_dec(byte *prim, byte *seg, const 
char *arqm, const char *arqd, FILE **orig, 

FILE ♦♦dest){ 

byte sts[6]="CRYPT", buffer[7], primi, segl; 

• - 

if((*orig=fopen(arqm, "rb"))== NULL){ 
printf("\n Arquivo nao encontrado \n"); 
exit(0); 

} 

le_senha(&prim, &seg); 

if(fread(buffer, sizeof(byte), 5, *orig)!=5){ 
if (!feof(♦orig)){ 

printf("\n Erro de leitura \n"); 
fclose(*orig); 
exit(0); 

} 

} 

if(strncmp(buffer, sts, 5)){ 

printf ("\n Arquivo nao bloqueado \n") 
fclose(*orig); 
exit(0); 

} 

if(fread(Spriml,sizeof(byte),1,*orig)!=1){ 
if(!feof(*orig)){ 

printf("\n Erro de leitura \n"); 
fclose(*orig); 
exit(0); 

} 

} 

if(fread(Ssegl, sizeof(byte), 1, *orig)!=1){ 
if (!feof(*orig)){ 

printf("\n Erro de leitura \n~); 
fclose(*orig); 
exit(0); 

} 

) 

if((*prim!=priml)||(*seg!=segl)){ 
printf("\n Senha incorreta \n"); 
fclose(*orig); 
exit(0); 

} 

if((*dest=fopen(arqd, "wb"))==NULL){ 
printf("\n Impossivel abrir arquivo 
provisorio \n"); 

fclose(♦orig); 
exit(0); 

} 

) 

void arq_encode(const char *arqd, FILE *orig, 
FILE *dest, byte prim, byte seg){ 

byte jl=prim, j2=seg; 
int ret; 
byte *buffer; 

if((buffer=(byte 

*)malloc(maxbuf*sizeof(byte)))==NULL){ 
printf("\n Falta de memória \n*); 


30 










s4. jR TICf O X Programa em C p/ Criptografia de Arquivos 


sair(arqd f &orig, &dest); 

} 

rewind(orig); 

if((ret=fread(buffer, sizeof(byte), maxbuf, 
orig))!=maxbuf){ 

if(!feof(orig)){ 
free(buffer); 

printf("\n Erro de leitura \n")? 
sairíarqd, &orig, &dest); 


while(ret>0) { 
for(int i=0;i<ret;i++) { 

ji-; 

j2++; 

if ( (i%2) =ss 0) { 
buffer(i]=~buffer[i]; 
buffer[i]=buffer[i] A jl; 

} 

else { 

buffer(i)=~buffer(i); 
buffer(i)=buffer[i] A j2; 

) 

) 

if(fwri te (buffer,sizeof(byte),ret,dest)!=ret){ 
free(buffer); 

printf(*\n Erro de escrita ou disco cheio 
\n*) ; 

sairíarqd, &orig, &dest); 

) 

if (fflush(dest)==EOF) { 
free(buffer); 

printf("\n Erro de escrita ou disco cheio 
\n") t 

sair(arqd, &orig, &dest); 

) 

if((ret=fread(buffer, sizeof(byte), maxbuf, 
orig))!=maxbuf){ 

if(!feof(orig)){ 
free(buffer); 

printf(*\n Erro de leitura \n*); 
sair(arqd, &orig, &dest); 

) 

* ) 

) 

) 

void arq_decode(const char *arqd, FILE *orig, 
FILE *dest, byte prim, byte seg){ 

byte jl=prim, j2=seg; 
int ret; 

‘byte *buffer; 

if((buf fer=(byte 


*)malloc(maxbuf*sizeof(byte)))==NULL){ 
printf(*\n Falta de memória \n m ); 
sairíarqd, &orig, &dest); 

) 

if((ret=fread(buffer, sizeof(byte), maxbuf, 
orig))!=maxbuf)( 

if(!feof(orig)){ 
free(buffer); 

printf(*\n Erro de leitura \n"); 
sairíarqd, &orig, &dest); 

) 

) 

while(ret>0) { 
for(int i=0;i<ret;i++){ 

jl“? 

j2++; 

if((i%2)==0){ 
buffer[i]=buffer[i] A j1; 
buffer[i]=~buffer[i]; 

} 

else { 

buffer[i]=buffer[i] A j2 ; 
buffer[i]=~buffer[i]; 

) 

) 

if(fwri te (buffer,sizeof(byte),ret,dest)!=ret){ 
free(buffer); 

printf(*\n Erro de escrita ou disco cheio 
\n" ) ; 

sairíarqd, &orig, &dest); 

) 

if (ff lush(dest)==EOF){ 
free(buffer); 

printf("\n Erro de escrita ou disco cheio 
\n") ; 

sairíarqd, &orig, &dest); 

) 

if((ret=fread(buffer, sizeof(byte), maxbuf, 
orig))!=maxbuf){ 

if(!feof(orig)){ 
free(buffer); 

printf(*\n Erro de leitura \n"); 
sairíarqd, &orig, &dest); 

) 

} 

) 

) 

void arq_close(const char *arqm, const char 

*arqd, FILE **orig, FILE **dest){ 

fclose(*orig); 

fclose(*dest ): 

remove(arqm); 

rename(arqd,arqm); 

) 


31 





































MELHOR DA 
INFORMÁTICA 

NACIONAL 


Por tudo isso você não pode deixar de 
ler Micro Sistemas. .Não perca mais 
tempo! Garanta mensal mente o seu 
aos acontecimentos e tendências, Micro exemplar fazendo uma assinatura anu- 


Quem quer ficar "por dentro" da 
informática nacional não pode deixar 
de ler Micro Sistemas. Sempre atenta 


Sistemas ê a única revista que mais 
reflete o que acontece no mercado 
brasileiro. Feita por brasileiros e para 
brasileiros Micro Sistemas traz sempre 
em suas páginas os assuntos mais 
quentes do momento, programas em ■ 
diversas linguagens, rotinas, livros, 
cartas de leitores, etc. 


al de MICRO SISTEMAS por apenas: 


" PROMOÇÃO " 

/ ANO -R$ 50,00 
2 ANOS - R$ 100,00 



Para adquirir números anteriores 
enviar R$ 5,00 para cada exemplar 
desejado, R$ 1,00 para as despesas 
postais, (disponível a partir do n- 

153) 


/Micro 



Caixa Postal 18347 
Rio de Janeiro - RJ 
CEP 20722-970 

Tcl. (021) 532-0770 ctul. 4016779 


UF: 


Nome:. 

Endereço:. 

Bairro:. Cidade:. 

CEP: . Telefone: . 

Assinatura:. Data././. 

□ Estou enviando cheque cruzado nominal à PRB informática 
Editora Ltda, referente à uma assinatura de MICRO SISTEMAS 
G3anco:.Ag:.cheque n-\:. 


TEL/FAX: (021) 261-7841 - (DAS 9,00 ÀS 17,00 HS) 






















































Por: Daniel Omar Basconcello Filho 


Para o leitor que nào sabe o que é a 
propriedade Canvas, acredito que a forma 
mais simples para entendê-la è traduzir a 


E de conhecimento de todos que 
essa nova linguagem de programação 
chamada Delphi, veio para ficar. Tudo 
devido a sua facilidade de aprendizado 
e a rapidez com que uma aplicação é 
desenvolvida nesta linguagem. Além 
disso, a Borland disponibilizou inúme¬ 
ros recursos para a geração de um pro¬ 
grama, o que torna o sucesso do Delphi 
maior ainda. 

Este artigo visa desmistificar o 
uso da impressora sob o ambiente 
Windows. Com o Delphi, usar os 
recursos de impressão fica muito 
simples. Primeiramente vamos en¬ 
tender como funciona a impressão 
sob o Windows, para após 
implementarmos esses conheci¬ 
mentos utilizando o Delphi. 

A impressão sob o Windows dife¬ 
re um pouco da impressão no DOS, 
pois o programador a princípio nào 
precisa saber qual a impressóra que 
o usuário estará utilizando. O ambi¬ 
ente se encarrega dessa parte, através 
do driver da impressora previamente 
instalado. O programa diz ao ambiente 
o que quer imprimir e o ambiente 
imprime usando a configuração do 
driver de impressão atual. Para o pro¬ 
gramador isto facilita MUITO o seu 
trabalho, pois em DOS, além de criar 
o programa, existe o inconveniente de 
se ter que criar rotinas para imprimir 
em vários tipos de impressora. Às 
vezes a impressora que certo usuário 
possui nào está inclusa no programa, 
gerando problemas. 


palavra canvas para o português. 

Canvas significa “tela de pintor". Assim, 

ê 

tudo que enviarmos para Canvas será, no 


Partindo do princípio que o progra¬ 
mador nào precisa saber o tipo de im¬ 
pressora do usuário, fica mais fácil cri¬ 
ar rotinas de impressão. No Delphi, fica 
mais fácil ainda. 


frigir dos ovos, desenhado e pintado 
numa tela virtual de pintor. Virtual 
porque ela só existe dentro de um 
computador, ou seja, na memória do 
computador e posterior e eventualmente, 
irá se concretizar numa folha ou 
transparência através de uma impressora. 


O objetoTPrinter que está na Unit 
Printers, é responsável pelo trabalho 
de impressão do seu programa, e ao 

0 

envio do resultado para o Windows, 
onde esse usa o driver de impressora 
de forma adequada. Usa-se uma vari¬ 
ável do tipo TPrinter, já definida, 
chamada Printer. Vamos ao exemplo 
prático de como utilizá-la. Veja abai¬ 
xo a forma como é executada a im¬ 
pressão de um simples texto envolto 
por um retângulo: 


33 











pra^ire<iyoml.BitStJi2Clik(Sender:TOject); 
begin 

Printer.BeginDoc; {Cria uma pᬠ
gina virtual, que corçtèm o que 
vamos imprimir) 

Printer.Canvas.Rectangle(0,0,400,100); 
{Usa os métodos da propriedade Canvas) 
Printer.Canvas.TextOut(10,50,'Este 
é um teste de impressão no Delphi'); 

Printer.EndDoc; {Passa a página 
virtual para o Windows) 

end; 

Somente essas linhas já sào o su¬ 
ficiente para imprimir em Delphi. A 
primeira linha começa o trabalho de 
impressão, chamando o método 
Prin-ter.BeginDoc. A partir daí, o 
usuário “desenha" o que quer impri¬ 
mir em uma página virtual através dos 
métodos da propriedade Canvas. 
Isto é feito nas duas linhas seguin¬ 
tes do exemplo acima, desenhando 
respectivamente um retângulo com 
o míib Printer.Can- 

vas.Rectangle e escrevendo uma 
frase dentro dele com o método 
Prin-ter.Canvas.TextOut, As coor¬ 
denadas passadas aos métodos 
correspondem à posição do retângu¬ 
lo e do texto na nossa página virtual. 


desenvolveremos abaixo, usaremos 
apenas alguns deles. Fica a cargo do 
programador mais curioso, consultar 
sobre os outros. Uma boa sugestão 
seria consultar o help do Delphi, que 
pessoalmente, acho extremamente 
útil. Eis o roteiro do nosso programa- 
exemplo: 

l#Crie um novo projeto, redi¬ 
mensionando Form I se desejar. 

2# Adicione ao form o componente 

Button. 

3# Altere a sua propriedade Caption de 
Button 1 para Imprime e dê um duplo 
clique nele. 



4# Adicione as linhas ao procedimen¬ 
to TForml.ButtonlClick conforme 
listagem 1: 

5# Na seção implementation, logo após 


a diretiva de compilação, insira a unit 
Printers na cláusula Uses (uses 
Printers;), pois sem esta unidade o 
programa não funciona. 

6# Compile o seu programa e certifi¬ 
que-se de que sua impressora esteja li¬ 
gada. Se não estiver, o programa roda 
perfeitamente, mas o driver de impres¬ 
são do Windows informa a situação. 

Como vimos, qualquer trabalho de 
impressão pode ser facilmente execu¬ 
tado por um programa feito em Delphi. 
Usando os métodos do Canvas pode¬ 
mos alcançar resultados extremamen¬ 
te profissionais, basta o programador 
usá-los com criatividade. 


Daniel Ornar Basconcello Filho è es¬ 
tudante de segundo Grau Técnico de 
Eletrônica; programador em Turbo 
Pascal, Basic, Delphi e professor de 
informática há 2 anos. 
e-mail: phantor@mandic.com.br 


Terminada a etapa de desenho, o 
método Printer.EndDoc se encar¬ 
rega de mandar a página virtual para 
o Windows, e este para o driver de 
impressão. 

Iremos agora desenvolver um tra¬ 
balho de exemplo, onde todos leito¬ 
res poderão aplicar o conhecimento 
aqui exposto de forma prática. Exis¬ 
tem vários métodos do objeto Printer 
e da propriedade Canvas para utiliza¬ 
ção na impressão. No programa que 


Listagem 1 


implementation 
{$R *.DFM) 
uses Printers? {5) 
procedure 

TForml.ButtonlClick(Sender: TObject)? 
begin 

Printer.BeginDoc; {Começa a construção da página} 

Printer.Canvas.Rectangle(0,0,600,100); {Desenha uma caixa retangular} 
Printer.Canvas.TextOut(10,10, 'Demo de Impressão'); {Escreve um texto} 
Printer.Canvas.EllipsedO,220,300,300); {Desenha uma elipse} 

Printer.EndDoc; {Termina a construção e envia o trabalho para o Windows} 
end; 


{4} 













































Perfil do Leitor da Revista Micro Sistemas 

Sua opinião é extremamente importante para nós! 

Softw are Cada caixa representa uma categoria de itens que você usa ou não em seu micro. Como estamos inician- 

do a pesquisa, todos os itens têm o percentual 0,0% e encontram-se em ordem alfabética. Para indicar um ou mais itens que 
você usa em uma categoria, basta riscá-los. Se um item nào estiver listado numa categoria , acrescente-o ao final da lista 

com letra bem legivel. Se desejar, acrescente novas categorias e os respectivos itens. 




Sistema Operacional 

00,0% DOS-IBM 
00,0% DR-DOS 
00.0% MS-DOS 
00.0% OS-Mac 
00.0% OS2 
00.0% Unix 


Antivírus 

00.0% VShield 
00.0% Viruscan 
00 . 0 % 


Processador de Texto 

00.0% Carta Certa (DOS) 
00.0% Carta Certa (Win) 
00.0% Fácil (DOS) 

00.0% Fácil (Win) 

00.0% Word (DOS) 

00.0% Word (Win) 

00.0% WordPerfect (DOS) 
00.0% WordPerfect (Win) 
00.0% Wordstar (DOS) 
00,0% Wordstar (Win) 
00,0% WordPad (Win) 
00,0% Write(Win) 

00 . 0 % 


Ambiente Gráfico 

00,0% Windows 3.1 
00,0% Windows 3.11 
00,0% Windows 95 
00,0% Windows NT 


Utilitários Independentes 

00.0% Norton 
00.0% PCTools 
00.0% XTGold 
00 . 0 % 


Editor de Desenho/Foto 

00,0% Corel Photo Paint 
00,0% Paint Shop Pro 
00,0% Paintbrush 
00,0% Photo Shop 
00 , 0 % 


• r »••••• • 

Cad / Editor 3D 

00,0% 3D Studio 
00,0% AutoCad (DOS) 
00,0% AutoCad( Win) 
00,0% MicroStation 
00 , 0 % 


Compactador 

00,0% Aij( DOS) 
00.0% Arj (Win) 
00.0% Lha (DOS) 
00.0% PKZip(DOS) 
00.0% PKZIp(Win) 


Planilha 

00,0% Excel (Win) 

00.0% Lotus 123 (DOS) 
00.0% Lotus 123 (Win) 
00,0% Quattro pro (DOS) 
00.0% Quattro Pro (Win) 
00 , 0 % 


Desktop Publishing 

00,0% Corel Draw 
00,0% MS Publisher 
00,0% Page Makcr 
00,0% Ventura 

00 . 0 % 


Linguagem de Programação 

00,0% Access (Win) 

00.0% Asscmbler 
00,0% Basic (DOS) 

00,0% C.C++ (DOS/Win) 
00,0% Clipper (DOS) 

00,0% Cobol (DOS) 

00,0% Cobol (Win) 

00.0% dBase (DOS) 

00.0% dBase (Win) 

00.0% Delphi (Win) 

00.0% FiveWin (Win) 

00.0% Fox Pro (DOS) 

00.0% Fox Pro (Win) 

00.0% HTML (Win) 

00.0% Java( DOS/Win) 
00.0% Oracle (DOS) 

00.0% Oracle (Win) 

00,0% Paradox (DOS) 

00.0% Paradox (Win) 

00.0% Pascal (DOS) 

00,0% Pascal (Win) 

00.0% QBasic (DOS) 

00.0% Visual Basic (Win) 


Hardware 


Tipo de Impressora 




[ ] Jato de Tinta 

[ ] Color 

Tipo de Micro 


[ J Laser 

[ ] P&B 

[ ] Mac 

CPU(Mhz) 

[ 1 Matricial 


[ ] MSX 

RAM (Mb) 



[ ] PC-AT 

HD(Mb/Gb) 

Tipo de Scanner 


[ ] PC-XT 

Fax/Modem (bps) 

[ ] De Mesa [ ) Color 


[ ] Pentium 

Multimídia (Vel.) 

[ 1 Manual [ ] P&B 


[ i 

No-break (KVA) 

dpi 


[ i 

Fita Strimmer(Gb) 



Sobre MS e Você 


01 - Como soube da MS? 

( ] Banca [ ] Internet Indicação de[ ] Amigo [ ] de Professor 
02 - Quando compra MS? 

[ ] Sou assinante [ ] Todo mês [ ] Quando o assunto me interessa 
03 - Gostou desse exemplar? [ ] Sim [ ] Nào 


Internet/BBS 


Navegador Web 

00,0% Microsoft Internet Explorer 
00.0% Mosaic 

00,0% Netscape Navigator00,0% 

Acesso | | Internet | | BBS 

[ ] Baixar aplicativos 
( ] Baixar fotos 
[ ] Baixar fotos pomòs 
[ ] Bater papo com amigos 
[ ] Compras 
[ ] E-mail 

[ ] Fazer novas amizades 
[ ] Fazer sexo virtual 
[ ] Namoro virtual 
[ ] Participar de workgroup 
[ ] Pesquisa escolar 
[ ] Pesquisa profissional 

[ ] 


04 - Se nào, o que mudaria nele? 

05-0 que gostaria de ver nas próximas edições? 

06 - Quais os artigos, colunas, seções, séries que mais gosta? 


Envie sua resposta para um dos 
endereços constantes 
da página com o anúncio 
“Procura-se Talentos" 


















































Micropro¬ 
cessadores e 
Placas de 

cpü . 

Por: Laércio Vasconcelos 




Sesta serie, iniciada na Micro Sistemas # 
164, Laércio Vasconcelos apresenta os 
microprocessadores usados nos PCs atuais, 
além de discutir aspectos técnicos sobre as 
placas de CPU que os utilizam. 

O texto extraído do livro "Upgrade Expert " 
volume I. 


I t.R 

O velho barramento ISA mostrou-se 
adequado para diversos tipos de placas 
de expansão. Entretanto, já no início 
dos anos 90, alguns dispositivos toma¬ 
ram-se mais velozes que o permitido 
pelo barramento ISA: a placa de vídeo 
e a placa controladora de disco rígido. 

Para operar com altas resoluções e 
elevado número de cores, as placas 
SVGA modernas possuem uma grande 
quantidade de memória de vídeo. Para 
que os gráficos sejam apresentados na 
tela em alta velocidade, era preciso que 
o microprocessador pudesse transferir 
dados para a placa de vídeo com taxas 
de transferência mais elevadas. A taxa 
máxima de 8 MB/s permitida pelo 
barramento ISA já não era suficiente. 

Os fabricantes de discos rígidos tor¬ 
naram-se capacitados a produzir mode¬ 
los de alto desempenho, capazes de 
operar com taxas de transferência su¬ 
periores a 10 MB/s, o que não era per¬ 
mitido pelo barramento ISA, que se tor¬ 
nou uma barreira para o desenvolvimen¬ 
to de dispositivos mais velozes. 

Para resolver este problema, a 
VESA (Video Electronics Standards 
Association) criou um novo 
barramento veloz chamado VLB 
(VESA Local Bus). Este barramento 
foi muito utilizado nas placas de CPU 
486, e mesmo nas de 386, fabricadas 
em 1993 e 1994. Em 1995, começou 
a cair em desuso, dando lugar ao 
barramento PCI, usado nas placas de 
CPU Pentium. Este é um ponto muito 
importante. Se você possui um com¬ 
putador com uma placa de CPU 486 
equipada com slots VLB e placas de 
expansão VLB, caso deseje substituir 
a placa de CPU por uma mais moder¬ 
na (que certamente não possuirá slots 
VLB, e sim, PCI), terá que instalar 
também uma placa SVGA padrão PCI. 


Se você trabalha no ramo de upgrade de 
micros, faz isto por hobby ou apenas deseja 
aumentar seus conhecimentos, o livro 
"Upgrade Expert " de Laércio Vasconcelos é 

9 

uma ferramenta necessária para você. 


A placa de CPU 486 da figura 16 
apresenta slots VLB. Em geral, essas • 
placas de CPU possuíam dois ou três 
slots VLB, nos quais podiam ser co¬ 
nectadas as seguintes placas: 

Placa SVGA VLB 
• Placa IDEPLUS VLB 


36 




















Coluna do Laércio 


A maioria dos micros 486 
comercializados entre 1993 e 1995 sào 
equipados com slots VLB e com pla¬ 
cas SVGA e IDEPLUS VLB. Uma pia- 

* 

ca SVGA VLB permite a transferência 
de dados em alta velocidade entre o 
microprocessador e a memória de 
vídeo. Uma placa IDEPLUS VLB per¬ 
mite obter elevadas taxas de transferên¬ 
cia para o disco rígido IDE. 

O barramento VLB opera com 32 
bits, e utiliza o mesmo clock com o 
qual o microprocessador comunica-se 
com as memórias (clock externo). Por 
exemplo, em uma placa de CPU 
486DX2-66, na qual o clock externo é 
de 33 MHz, os slots VLB podem trans¬ 
ferir até 132 MB/s, valor muito acima 
dos 8 MB/s permitidos pelo 
barramento ISA. 

Os slots VLB sào compostos de três 
conectores. Os dois primeiros sào in¬ 
teiramente compatíveis com os slots 
ISA (por isso, podemos conectar pla¬ 
cas ISA de 8 e 16 bits nesses slots, 
usando a seçào ISA), e um terceiro 
conector no qual é feita a transferên¬ 
cia de dados em alta velocidade, e em 
grupos de 32 bits. A maior parte das 
transferências de dados é feita através 
deste terceiro conector. A figura 28 
mostra uma placa SVGA VLB e uma 
placa IDEPLUS VLB. 



Figura 28 

Placas SVGA VLB e IDEPLUS VLB . 

É correto afirmar que as placas 
VLB sào obsoletas? Sim e nào. Essas 
placas permitem elevadas taxas de 
transferência, da mesma forma como 
ocorre com as modernas placas de 


/ Microprocessadores 


# p 

expansào PCI, usadas nos PCs basea¬ 
dos no Pentium. Os computadores 
486, antigos campeões de velocidade, 
ainda sào capazes de executar com efi¬ 
ciência a maioria dos softwares mo¬ 
dernos. Basta lembrar que o 486 de 
120 MHz possui velocidade de 
processamento praticamente igual ao 
de um Pentium de 75 MHz. Um com¬ 
putador 486 de no mínimo 66 MHz 
equipado com placas de expansào VLB 
é razoavelmente veloz para executar a 
maioria dos programas modernos, in¬ 
clusive o Windows 95 e quase todos 
os seus aplicativos, além da quase to¬ 
talidade dos jogos modernos. Nos pró¬ 
ximos anos, os PCs 486 passarào a ser 
cada vez menos adequados à execução 
de programas modernos. Por exem¬ 
plo, muitos jogos já estão operando 
em modos SVGA de alta resoluçào, 
nos quais o 486 apresenta resultados 
insuficientes, sendo o usuário obriga¬ 
do a optar pelo modo gráfico VGA, 
com resoluçào de 320x200, com 256 
cores. 

Já os PCs 486 com clocks mais 
baixos, como 25 e 33 MHz, podem 
ser considerados obsoletos, sendo 
lentos para a execução de muitos 
softwares modernos. Observe que 
esses computadores, desde que pos¬ 
suam memória suficiente, podem 
executar os mesmos programas que 
um Pentium super veloz, estando a 
única diferença na velocidade de exe¬ 
cução. Por exemplo, um Pentium- 
166 é cerca de 10 vezes mais veloz 
que um 486DX-33. Quando o usuᬠ
rio não tem condições financeiras 
para fazer um upgrade no 
microprocessador, uma forma de 
contornar o problema é evitar o uso 
de softwares modernos. Por exem¬ 
plo, se o usuário estiver satisfeito 
com o Word 6.0, mesmo usado sob o 
Windows 95, pode trabalhar bem com 
um 486 de 25 MHz. Entretanto, se 
quiser usar a nova versão do Word, 
própria para o Windows 95, certa¬ 
mente sentirá o baixo desempenho do 
486 de 25 MHz. Em outras palavras, 
usuários que procuram sempre usar 
as versões mais recentes dos diver¬ 
sos programas existentes no merca¬ 


do, devem procurar também usar com¬ 
putadores mais velozes. 

Se você possui um computador 
equipado com uma placa de CPU 486 
com slots VLB, mas suas placas SVGA 
e IDEPLUS sào modelos de 16 bits, 
vale a pena adquirir modelos VLB, que 
ainda podem ser encontrados à venda. 
Placas SVGA VLB com 1MB de me¬ 
mória custam o equivalente a cerca de 
50 dólares, e placas IDEPLUS VLB 
custam cerca de 20 dólares, mesmo no 
mercado brasileiro. Portanto, com cer¬ 
ca de 70 dólares, é possível melhorar 
bastante o desempenho do computador, 
através da maior velocidade da nova pla¬ 
ca de vídeo, e da maior taxa de transfe¬ 
rência do disco rígido. Entretanto, é 
importante saber que essas placas de 
expansào VLB nào poderão ser futura- 
mente aproveitadas em um computador 
Pentium, já que estes nào possuem slots 
VLB. Se você pretende, a curto prazo, 
instalar uma placa de CPU Pentium, nào 
vale a pena investir em placas de ex¬ 
pansào VLB. 

Pr/ 

Ao desenvolver o microprocessador 
Pentium, a Intel criou também um novo 
barramento, tào veloz quanto o VLB, 
porém muito mais versátil. Trata-se do 
barramento PCI (Peripheral 
Component Interconnect), usado já nas 
primeiras placas de CPU Pentium a 
serem lançadas no mercado. Possui as 
seguintes características: 

• Opera com 32 ou 64 bits 

• Apresenta taxas de transferência de até 
132 MB/s, com 32 bits 

• Possui suporte para o padrào PnP 
(Plug and Play) 

Apesar de poder operar com 32 ou 
64 bits (os slots PCI de 64 bits sào um 
pouco maiores que os de 32), pratica¬ 
mente todas as placas de CPU Pentium 
atuais utilizam a versào de 32 bits. Uti¬ 
liza um clock igual à metade do clock 
externo do microprocessador Pentium. 
Isto significa que, dependendo do clock 
do microprocessador Pentium utiliza¬ 
do, o barramento PCI pode operar com 






















Coluna do Laércio / IVt ia t~t?pro a as s ado ras 


25, 30 ou 33 MHz. A tabela que segue 
mostra a relaçào entre o clock do 
barramcnto PCI e o clock interno do 
microprocessador Pentium. Em todos 
os casos, o clock do barramento PCI é 
igual à metade do valor do clock exter¬ 
no do Pentium. 

Clock interno Clock externoClock PCI 


75 MHz 

50 MHz 

25 MHz 

90 MHz 

60 MHz 

30 MHz 

100 MHz 

66 MHz 

33 MHz 

120 MHz 

60 MHz 

30 MHz 

133 MHz 

66 MHz 

33 MHz 

150 MHz 

60 MHz 

30 MHz 

166 MHz 

66 MHz 

33 MHz 

200 MHz 

66 MHz 

33 MHz 


Observe que todas as versões do 
Pentium, com exceçào do modelo de 
75 MHz, existe muito pouca diferença 
no clock do barramento PCI. Por 
exemplo, um Pentium-200 é capaz de 
transferir dados pelo barramento PCI 
com a mesma velocidade do Pentium- 
100, já que ambos utilizam um clock 
PCI de 33 MHz. Como em cada ciclo 
de clock sâo transferidos 4 bytes (32 
bits), isto resulta em uma taxa de trans¬ 
ferência igual a cerca de 132 MB/s. 
Com o barramento PCI operando a 30 
MHz, temos 120 MB/s, e no 
“lanteminha”, que é o Pentium-75, no 
qual o clock PCI é de 25 MHz, temos 
100 MB/s. 

As placas de expansão PCI pos¬ 
suem um recurso muito interessan¬ 
te, além da sua elevada velocidade 
de transferência de dados. Trata-se 
da autoconfiguraçào obtida com o 
padrão PnP (Plug and Play). Essas 
placas são reconhecidas e configu¬ 
radas automaticamente pelo BIOS 
(todas as placas de CPU equipadas 
com slots PCI possuem um BIOS 
PnP) e pelo sistema operacional (o 
Windows 95 é um exemplo de sis¬ 
tema operacional PnP), sem neces¬ 
sitarem que o usuário precise 
posicionar jumpers ou microchaves 
para realizar manualmente a sua 
configuração, como ocorria com as 
placas de expansão até pouco tem¬ 
po atrás. 

Obs.: Não só as placas de expansão PCI 
são PnP. A maioria das placas de ex¬ 


pansão de 8 e 16 bits lançadas recente¬ 
mente também atendem ao padrão PnP. 

A figura 29 mostra uma placa PCI. 
Trata-se de uma placa Super VGA, a 
placa de expansão PCI usada em pra¬ 
ticamente todos os computadores 
baseados no Pentium, e nas versões 
mais recentes das placas de CPU 
486 e 586. 


•r 



I 


Figura JV 

i ma placa Sí 6 1 PCI. 

Além da placa SVGA PCI, existem 
outras menos comuns. Podemos citar 
alguns exemplos: 

• IDEPLUS PCI 

• Placa de rede PCI 

• Digitalizadoras de video PCI 

• Controladoras SCSI PCI 

MCA 

O barramento MCA (Micro 
Channel Architecture) já faz parte 
da história da microinformática. 
Foi criado em meados dos anos 80 
pela IBM, para ser usado nos com¬ 
putadores IBM PS/2, os sucesso¬ 
res do IBM PC/AT. Tratava-se de 
um barramento de 32 bits que ope¬ 
rava com um clock de 10 MHz, o 
que o tornava 2,5 vezes mais veloz 
que o velho barramento ISA. Ape¬ 
sar de ser veloz para os padrões de 
sua época, possuía um sério pro¬ 
blema: era um barramento “secre¬ 
to”, pertencente à IBM. Isto signi¬ 
fica que apenas a IBM podia pro¬ 
duzir placas de expansão MCA, 
bem como placas de CPU equipa¬ 
das com slots MCA. Além de ser 
inútil para os demais fabricantes 
além da IBM, não era nada interes¬ 
sante para o usuário. Como apenas 
a IBM produzia placas de expansão 
MCA, ou então empresas creden¬ 

38 


ciadas pela IBM, essas placas 
acabavam sendo muito raras e ca- 
ras. O barramento ISA, apesar de 
ser inferior, continuou sendo usa¬ 
do em larga escala por todos os fa¬ 
bricantes, exceto a IBM. 

EISA 

O barramento EISA (Extended 
ISA) foi criado por diversas empre¬ 
sas líderes na fabricação de hardware 
para PCs. Sua principal característi¬ 
ca era manter a compatibilidade com 
as placas ISA, e ainda permitir a co¬ 
nexão de placas de expansão EISA. 
Portanto, um slot EISA pode operar 
com dois tipos de placas: 

• Placas ISA de 8 ou 16 bits, operando 
com 8 MHz 

• Placas EISA de 32 bits, operando com 
8 MHz 

O funcionamento em 8 MHz foi 
mantido para garantir a compatibi¬ 
lidade com barramento ISA. Pelo 
fato de operar com 32 bits, o 
barramento EISA era duas vezes 
mais veloz que o ISA. 

Ao contrário do MCA, o EISA 
foi bastante utilizado, mas não ao 
ponto de se tornar comum. Era um 
barramento muito mais avançado 
que apresentava, não apenas uma 
velocidade maior, mas recursos 
avançados como o reconhecimen¬ 
to automático de placas, uma es¬ 
pécie de Plug and Play dos anos 
80. Sendo mais sofisticado, as pla¬ 
cas de CPU e de expansão, que o 
utilizavam necessitavam de chips 
especiais. A Intel era o principal 
fabricante de chip sets EISA. 
Como a maioria das placas de ex¬ 
pansão não necessitava de uma ve¬ 
locidade tão elevada,apenas algu¬ 
mas placas especiais o utilizavam. 
Tipicamente, placas de CPU para 
serem usadas em servidores de 
arquivos, placas de rede e placas 
controladoras SCSI de alto desem¬ 
penho utilizavam o barramento 
EISA, pelo menos até o início dos 
anos 90. Algumas poucas placas 























Coluna do Laércio / Microprocessadores 


SVGA para uso profissional em 
CA D também chegaram a usar o 
EISA. Por volta de 1994 já nào era 
mais possível encontrar placas 
EISA à venda, tendo sido substi¬ 
tuídas por outras mais avançadas, 
primeiro com o barramento VLB, 
e depois com o PCI. 

lUt rra /// en los p roprietários 

Cronologicamente, os barramentos 
usados nos PCs foram: 

• ISA de 8 bits 

• ISA de 16 bits 
•MCA 
•EISA 

• Barramentos proprietários 
VLB 

•PCI 

Os quatro primeiros aparece¬ 
ram nos anos 80, e os dois últi¬ 
mos apareceram nos anos 90. En¬ 
tre esses dois grupos, surgiram os 
barramentos proprietários. Eram 


barramentos, em geral de 32 bits, 
que certos fabricantes criavam 
para a conexào de placas especi¬ 
ais. Normalmente operavam com 
altas velocidades, acompanhando o 
clock do microprocessador. Qua¬ 
se sempre, seu objetivo era a co¬ 
nexào de placas de expansão de 
memória. Alguns chegavam mes¬ 
mo a utilizar placas de video es¬ 
peciais. O problema desses 
barramentos era a falta de padro¬ 
nização. Ao adquirir uma placa de 
CPU de um fabricante X, equipa¬ 
da com um slot proprietário, nào 
poderíamos conectar neste slot, 
uma placa de expansão de memó¬ 
ria um uma placa de video de um 
fabricante Y. A falta de padroniza¬ 
ção era um grande empecilho para 
a proliferação de placas de expan¬ 
são proprietárias. Einalmente, em 
meados de 1993, surgiu o 
barramento VLB, passando a per¬ 
mitir o uso de placas de expansão 
de alta velocidade, industrialmen¬ 
te padronizadas. 


Conclusão 

Chegamos finalmente ao final 
desta série de artigos. Você ccr- 
tamente possui agora conheci¬ 
mentos detalhados sobre as placas 
de CPU e os microprocessadores 
usados nos PCs lançados nos últi¬ 
mos anos. Quanto aos PCs lança¬ 
dos ao longo de 1997, a grande 
maioria deles seeue as caracteris- 
ticas aqui apresentadas. Já os mo¬ 
delos mais avançados, recém-lan- 
çados, certamente apresentam re¬ 
cursos novos não discutidos aqui. 
Este é o caso dos PCs baseados no 
Pentium MMX e nas novas versões 
do Pentium Pro. Para quem quer 
ficar sempre atualizado em rela¬ 
ção aos últimos lançamentos, o 
aprendizado nào cessa nunca... 


Laércio Vasconcelos é Engenheiro 
Eletrônico e autor de vários livros. 



JAVASCRIPT PARA NETSCAPE 

% 


Peter Kent e 
John Kent 
Makron Books 

Crie Scripts em um 
i nsta n te, i ri cr em en te 
suas páginas Web 
com multimídia e 
interati-vidade, 
mesmo que você 
nunca tenha uma 
Unha de código de 
programa antes. 

Aprenda todos os 






Guia Oficial 


•nu 

* r» 



JavaScript para 

Netscape 


0 Guia d? 

Programado para 
iCriiçío de Paginai 
Web Imeratnuj 


Et U M KtM 


% 

MVkKON 


fundamentos de pro¬ 
gramação com este 
guia passo a passo, 
fácil de seguir. 

Mais: Fontes de 
JavaScript no site 
da ventana on-line 
para você 

descarregar, 
apresentando todos 
os exemplos 

JavaScript do livro, 
em inglês, links para 
sites Web úteis e 
muito mais. 























BBBr V.*;.,, , 

FiveWin e a 
Migração de 
Aplicações 
Clipper para 
o Windows 

Parte 4 de 5 

Por:Vilian F. Arraes 

V* 

Como o próprio leitor pode observar, Vilian F. Arraes expõe de forna 
didática e objetiva os recursos que você poderá obter usando o 
FiveWin. Em nenhum momento o autor ou a Miem Sistemas tiveram a 
intenção de fornecer ao feitor um curso completo de Clipper, mas sim, 
uma introdução ao FiveWin para que programadores em Clipfter 
possam fazer a migração para o ambiente Windows de seus 
aplicativos originalmente feitos para ambiente DOS. 

O curso introdutório sobre o FiveWin iniciou na página 14 da 
Micro Sistemas 163. A parte 2 do presente curso, que em 
principio está dividido em 5 partes, foi publicada na edição 
166. Veja na página com o anúncio “O Melhor da Informática 
Nacional como adquirir números anteriores. 



A extensa bibliografia disponível no 
Brasil sobre o CLIPPER, contribuiu e 
continua sendo um dos principais fato¬ 
res determinantes do seu sucesso. So¬ 
bre o FiveWin praticamente inexiste bi¬ 
bliografia local, entretanto o produto é 
fornecido com um imenso conjunto de 
programas exemplos (mais de 200 para 
ser mais preciso), ilustrando os seus 
mais diferentes recursos. Além dos có¬ 
digos fontes de todas as suas funções 
e classes, cujo estudo permite abreviar 
significativamente sua migração para o 
ambiente Windows. 

Neste curso procuramos manter a 
utilização dos comandos do FiveWin o 
mais simples possível, sendo apresen¬ 
tadas apenas as cláusulas indispensᬠ
veis para execução da tarefa a que nos 
propomos. Comandos como MENU, 
DEFINE WINDOW, DEFINE DIALOG. 
@ LISTBOX, etc, possuem grandes con¬ 
juntos de cláusulas e opções para se¬ 
rem utilizadas nas mais diversas situa¬ 
ções. Todas essas cláusulas e opções 
são comentadas com detalhes nos ma¬ 
nuais que acompanham o produto, nos 
formatos de HELP para o Windows e 
arquivo para o NG. 

O próximo passo na implementação 
do nosso sistema exemplo, utilizado para 
ilustrar a aplicação dos comandos do 
FIVEWIN em conjunto com o 
C LIPPER, consiste em implementar as 
operações de manutenção propriamen¬ 
te ditas, ou seja, a inclusão, a exclusão, 
a alteração e a impressão dos registros 
do arquivo. Na edição anterior, criamos 
uma janela de diálogo onde foi adicio¬ 
nado um botão para cada uma das ope¬ 
rações de manutenção, sem entretanto 
definirmos que ação cada um destes 
botões executaria. Obviamente este tre¬ 
cho do programa precisará ser modifi¬ 
cado de acordo com a tabela 1. 

Observe que para todos os botões 
correspondentes as operações de ma¬ 
nutenção, foi definida a cláusula 
ACTION, sendo nela especificada uma 
chamada a função SCCM ANUT. A cha¬ 
mada difere de um botão para outro ape¬ 
nas no primeiro parâmetro passado, que 
como você já deve ter percebido 
corresponde a uma letra identificadora 
da opção escolhida( Exemplo: “1" para 
inclusão, “A” para alteração,, etc), ou 


40 















C7C/RSO / FiveWitr 


• • 

9 

• 

1.0,29 

BUTTON 

"&Incluir* 

SIZE 

40,10 

ACTION 

SccManut("I",oDlg) 

® 

2.5,29 

BUTTON 

"&Alterar" 

SIZE 

40,10 

ACTION 

SccManut("A",oDlg) 


4.0,29 

BUTTON 

"fitExcluir" 

SIZE 

40,10 

ACTION 

SccManut("E",oDlg) 

! ® 

5.5,29 

BUTTON 

"Im&primir" 

SIZE 

40,10 

ACTION 

SccManut("P",oLbx) 

9 

• • 

7.0,29 

• 

BUTTON 

"SFechar" 

SIZE 

40,10 

ACTION 

( oDlg:End() ) 


Tabela 1 


seja, uma vez selecionado um botào, a função SCCM ANUT será acionada pelo siste¬ 
ma, recebendo como parâmetro a operação a ser executada. O segundo parâmetro é 
utilizado para informarmos um objeto para manipulação/atualização. O código fonte 
desta função é apresentado a seguir: 


FUNCTION SccManut( forig, oObj ) 

LOCAL oDlgMan 

PRIVATE sCodigo,sNome,nValor 
IF forig = "E"// Processa exclusão de clientes 

IF MsgYesNo( "Exclui "+Rtrim(cli->nome)+" ?","Confirmação") 

DELETE 
SKIP -1 

oObj:Refresh () 

ENDIF 

RETURN * “ 

ELSEIF forig = "P" // Imprime o conteúdo do arquivo 

oObj:Report() 

RETURN 

ELSEIF forig = "I" // Incializa variáveis para inclusão 

GO BOTTOM 

sCodigo := StrZero(Vai (cl i->codigo)+1,4) 
sNome := Space(40) 
nLimite := 0 

ELSE// Inicializa variáveis para alteração 

sCodigo := cli*>codigo 
sNome := cli->nome 
nLimite := cli->limite 
ENDIF 

DEFINE DIALOG oDlgMan ; // Defini janela p/ interação com o cliente 
FROM 10,10 TO 17,70; 

TITLE Iif(forig="I","Inclusão","Alteracao")+" de clientes" 

9 00,01 SAY "Cod:" 

® 00,04 SAY "Nome do Cliente:" 

@ 00,24 SAY "Limite:" 

9 01,01 GET sCodigo PICT "9999" WHEN forig = "I" OF oDlgMan 

@ 01,04 GET sNome PICT "@!" VALID .NOT. Empty(sNome) OF oDlgMan 
@ 01,24 GET nLimite PICT "999,999.99" OF oDLgMan 

® 03,20 BUTTON "&Ok" SIZE 40,10 OF oDlgMan ACTION ( GrvCLien te (forig), oDlgMan:End() ) 
® 03,27 BUTTON "&Cancela" SIZE 40,10 OF oDlgMan ACTION ( oDlgMan:End() ) 
ACTIVATE DIALOG oDlgMan // Ativa a janela de diálogo 
RETURN NIL 

FUNCTION GrvClientet forig ) 

IF forig = "I" 

APPEND BLANK 

REPLACE codigo WITH sCodigo 
ENDIF 

REPLACEnome WITH sNome , ; 

limite WITH nLimite 
RETURN nil 


A exclusão de registros é a pri¬ 
meira operação implementada no 
SCCM A-NUT, sendo utilizada a fun¬ 
ção MSGYESNO para exibir uma ja¬ 
nela de diálogo solicitando a confir¬ 
mação da exclusão. Esta função re¬ 
cebe dois parâmetros. O primeiro é a 
mensagem a ser apresentada no cen¬ 
tro da janela (Ex: “Exclui “+Rtrim(cli- 
>nome)+" ?”) e o segundo o seu ti¬ 
tulo. Na janela de diálogo criada por 
esta função são adicionados auto¬ 
maticamente, os botões “SIM“ e 
“NÀO’\ A seleção do botào “SIM" 
leva a função a retornar um valor 
TRUE (.T.) o que no nosso código 
corresponde a confirmação da ope¬ 
ração de exclusão. 

Os comandos DELETE e SKIP-1 são 
nativos do próprio CLIPPER. A exclu¬ 
são do registro c finalizada pelo 
acionamento do método REFRESH so¬ 
bre o objeto passado como parâmetro 
para SCCMANUT. 



Janela de confirmação da exclusão . 

A impressão do conteúdo do ar¬ 
quivo c a operação mais simples de 
ser executada, uma vez que a própria 
classe LISTBOX disponibiliza um 
método REPORT. Ao ser acionado 
o botào imprimir o SCCMANUT 
simplesmente aciona este método 
para o LISTBOX definido no progra¬ 
ma SCC100. (Figura 2) 

A implementação das operações de 
inclusão e alteração de registros não 
apresenta comandos e/ou funções no¬ 
vas, sendo em sua maior parte utiliza¬ 
dos apenas recursos oriundos do próprio 
CLIPPER. Vale ressaltar apenas a for¬ 
ma como os dados são gravados, ou seja, 
através da seleção do botào “OK", que 
por sua vez aciona a função 
GRVCLIENTE que efetivamente gra¬ 
va os dados no arquivo. (Figura 3) 


41 












































CURSO / Uive Win 



Previov da listagem do arquivo de d'entes. 


Figura 2 


Inclusão de clientes 


Cod: Nome do Cliente: 



Limite: 









Cancela 


Janela de diálogo exibida nas 
operações de inclusão e alteração. 


Figura 3 


De forma alguma pretendemos com 
este programa exemplo definir padrões 
para a implementação de sistemas for 
Windows, a manutenção de uma arquivo 
pode ser executada de inúmeros modos 
associando-se o F1 VEWIN ao CLIPPER. 
Apresentamos apenas um desses modos 
da forma mais simples possível. Inten- 
cionalmente não implementamos a cri¬ 
tica para impedir a repetição dos códi¬ 
gos bem como o tratamento de valores 
válidos para o limite de crédito, por acre¬ 
ditarmos que com base no apresentado, 
nenhum programador CLIPPER encon¬ 
trará dificuldades para faze-lo. 


Até a próxima. 


VUian F. Arraes, Tecnólogo em 
Processamento de Dados pela UFPa, 
atua há dez anos na área de infor¬ 
mática, tendo desempenhado funções 
de treinamento, análise e programação 
de sistemas. Atualmente è sócio e ge¬ 
rente de desenvolvimento da 
TECNOINF Sistemas Ltda. 
e-mail: vilian@expert.com.br 


BOCA ABERTA SE SOUBESSE 
DE QUANTO 

PREENCHER ESTE ESPAÇO COM OANÚNCIO 

$ 

DE SUA EMPRESA 


MICRO SISTEMAS 
































































































Animação 

em ASCII 

W W W W ™ w W W ™ w w • w W W W W W W W w W W w W W 

com o 
Clipper 


Por: Carlos Emilio Padilla Severo 


Após a digitação e compilação do código, rode o programa para 
ver na tela um casal inicialmente sentado sob várias nuvem. 

Aos poucos o namorado levanta, entrega uma flor à namorada e 
carinhosamente a ajuda a se levantar. Dão um beijo. Ela não 

f j 

i cs is te e abraça fonemente seu amado. Os dois beijam-se entre 
vários coraçòezinhos vermelhos que flutuam sobre o casal. 
Enquanto a cena ocorre a lua vai surgindo por entre as nuvem. 
Tudo isso ocorre em aproximadamente 10 segundos. 

Prezado Carlos Padilla, queira me perdoar se me esqueci 
de algo ou viajei muito alto. Por outro lado, cabe registrar 
que este aplicativo que apresenta uma animação em ASCII 
vem confirmar algo que sempre acreditei, ou seja, 
programar é uma arte. 


Estou enviando o programa 

• ASCMOVE.PRG de minha au- 
. toria, pois pretendo participar 
| da seçào de programação des- 

• ta revista. Já tive outro progra¬ 
ma publicado por esta revista, 

• o que me deu grande satisfa- 
. ção em ver meu trabalho reco¬ 
nhecido e recebi várias cartas 

• de leitores e amigos. 

O programa ASCMOVE.PRG 

• demonstra a versatilidade da lin- 
! guagem Clipper - geralmente 
; conhecida por suas virtudes no 

• desenvolvimento de aplicações 
! comerciais - na criação de pe- 

• quenas animações em ASCII. 

! Estas animações podem ser 

• desenvolvidas em qualquer lin- 

• guagem até mesmos em arquivos 
! de lote no MS-DOS. Basta um 

• pouco de criatividade do progra- 
. mador. 

Espero que o programa agra- 
. de, é bastante simples mas inte¬ 
ressante. 

Os seguintes recursos serão 
necessários para rodar o progra- 

• ma: 

Computador 

• PC XT ou AT 

' Memória 

• 512 Kbytes 

• Video 

• CGA/EGA/VGA 

Carlos Emilio Padilla Severo è 

Bacharel em Informática pela 

• Universidade da Região da Campanha 
(URCAMP) - Bagè. Programa na 

■ linguagem Clipper há mais de quatro 
‘ anos profissionalmente. Atualmente é 

■ professor universitário na URCAMP. 

■ Para eventuais contatos com o autor. 
. escrever para: 

■ Av. Marechal Flori ano. 1601 - Centro 
'. - Bagè - RS - CEP 96400-011 


43 













y4/? TIGO / Animação em slSCII com o Clipper 


Programa 

* Descricao 

* Linguagem 

* Autor 

cor := SetColorí) 
Mat_nom := {‘ \ ‘C 

SetC ursor( 0) 

CIs 

SetPosí CK), (H)) 

SetColorí “BG+/N”) 

0 " _ _ 

_ 


: ASCMOVE.PRG 
: Faz uma animacaoem ASCII. 
: Clipper 5.2 

: Carlos Emilio Padilla Severo. 


EWVPV.VSWV ‘ 

*A\ ‘b\ T\ *-\ ‘9\*6* | 


* 

* 

* 

Abr. %* 


. 


*> M . 

O 44 , 

9 

4 

o 


«1 


M 


SetColorí cor) 

(íij 08,00 Clear To 23, 80 
SetPos( 13,29) 

SetColor( “W+/N”) 


9 44 

4 

////A 

AWW” 

9 44 
• 

//// *\ 

/* wwr 

9 44 
• 

//// 

j i_ wwr 

9“ 

• 

/A 

@ WWW 

9 44 

4 

/ / / 

% / vwr 

9 44 

4 

/ 

% / / wr 

9 44 

4 

i \_ 

/ /\\//\r 

9“ 

4 

\ 

AL/ \ V’ 

9 44 

4 

/ \ 

\ // \ r 

9“ 

• 

/ A 

/ / / \ 

SetColorí 

“G+/N") 



9“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAÁAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA” 

lnkey( .3) 


SetPos( 00,00) 

SetColorí “W+/N”) 

? “ V_—” 

SetColorí “BCH-/N”) 

• • 

O »*_ _ 

0 *•__ 

<)m M 

9 44 M 

4 

9 

9 


M 


•4 


SetColorí cor) 

(a 08.00 Clear To 23, 80 

SetPosí 13.20) 

SetColor( “W+/N”) 


9 44 

4 

////A 

AWW* 

9“ 

4 

//// *\ 

/* wwr 

9 44 

4 

nu 

j i_ wwr 

9 44 

4 

’ //\ 

@ \wwr 

9 44 

4 

/ / / 

% / vwr 

9“ 

• 

/ 

—% \\ / / wr 

9“ 

4 

1 \_ 

/ A\ / W” 

9 44 
# 

\ 

a\/ \r 

9“ 

4 

/ \ 

\ // \ p 

9 “ 

• 

/ A 

/ / / \ 

SetColorí 

“G+/N”) 



9 “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA” 

« 

Inkeyí .3) 

SetPos( 00,00) 

SetColorí "W+/N”) 

? “ \ _” 

SetColorí “BG+/N”) 

44 

• • 




SetColorí “BG+/N”) 

o ** ** 

SetColorí “W+/N”) 

99 “ \ _*♦ 

* * * ^_ 

SetColorí ‘BG+/NT) 

99 4* m 

• • 

9 “ 

4 

9 44 

9“ 

# 

9 

4 

9 

4 

SetColorí cor) 

(& 08,00 Clear To 23, 80 
SetPosí 13,29) 

SetColorí “W+/N”) 


9'* 

4 

////A 

AWW” 

994 

• 

//// *\ 

/* wwr 

9** 

4 

//// 

j i_ wwr 

9** 

# 

/ A 

@ \wwr 

9** 

4 

/ / / 

% / \ WC 

9*’ 

4 

/ 

1 

vO 

cj' 

1 

9’* 

4 

1 

/ A \ W” 

9** 

• 

\ 

AU \ V* 

9** 

• 

/\ 

\ // \ r 

944 

• 

/ A 

/ / / \ r 

SetColorí 

“G+/N”) 



9“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAÂAAAAA" 

Inkeyí .3) 


44 


44 


44 


SetPosí 00,00) 
SetColorí “W+/N”) 

7 “ j _.** 

SetColorí “BG+/N”) 

99** _ _ 

4 4 

9 ** 

SetColorí “W+/N”) 

99 ** \ _V 

4 4 I 

SetColorí “BG+/N”) 

99“ _ 

• • 

9 4%_H 

4 

SetColorí “W+/N”) 

99 ** \ _»» 

4 4 * 

SetColorí “BG+/N”) 

99“ _ 

4 4 

O "_ 

4 

9“_ 

4 

9 

4 

9 


44 


%4 


44 


44 


44 


SetColorí cor) 

(Q 08,00 Clear To 23. 80 
SetPosí 11,29) 

SetColorí “W+/NT) 


9*’ 

• 

///A” 




9** 

• 

//// *r 




9*’ 

4 

////_1 

| AWW” 



944 

• 

/ \ 

/* wwr 



944 

• 

/ / 

l _ wwr 



9'* 

• 

/ w 

@ \wwr 

» 


9*» 

4 

| A\ 

% 

/ \W\” 

9*’ 

4 

\ \ - 

% 


_ / wr 

9*’ 

4 

/\ \ / 

A \ W” 


9’* 

4 

// \ \ 

/\ u \ 

r 


9” 

4 

// \\_ 

_// \ 

r 


9** 

4 

/_1 \ 

J / / \ 


T 


SetColorí “G+/N”) 

9“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 

Inkeyí 3) 

SetPosí 00,00) 

SetColorí “W+/N”) 

? “ I - 


44 









































































































SelColoit "BG+/N”) 

99 **_ _ « 

• • ———■ ■ 

«) M_*• 

SetColort **W+/N~) 

99 « I _“ 

SetColort “BG+/N") 

*)*) ** _ M 

• • ^ ^ 

<) M M 

SetColor( “W+/NT) 

99 •• \ _~ 

• • « 

SetColor( “BG+/N") 

99 44 _ «« 

<) 44_M 

SetColoit “W+/1ST) 

99 44 \ _r 

• • * 

SetColoft “BG+/N’') 

‘W “ _” 

• * 

*) 4 4 44 

9 

9 


SetColort cor) 


(a 08. (X) Clcar To 23.80 
SetPost 11 , 29 ) 

SetColort “W+/N") 


944 

• 

///A" 



944 

• 

//// *Y 

r4 


9** 

• 

//// 

j A\\\r 


944 

• 

/ \ 

/* wwr 


•r* 

• 

/ / 

l__ wwr 


•r* 

• 

/ \\ 

faj \\\\\r 


•r* 

• 

1 /\\_ 

% / 

\wr 

944 

• 

\ V— 

% 

- / \\r 

944 

• 

/\ \ 

/ a \ \r 


*r 

• 

// \ \ 

a \_\ \ r 

1 

•r 

* 

// w 

\ \ r 


9~ 

• 

/—I V 

1 / v 

r 


SetColort **G+ W) 


9 **AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA” 


Inkeyt .3) 


SetPost (X). 00) 

SetColort “W+/N~) 

*> ** / _r 

SetColort “BG+/N”) 

99 *• _ 

• • 

•) 44_M 

SetColort “W+/N”) 

99 -| _ M 

SctColoit -BG+/N”) 

99 *_ 

• • 

•> 44_M 

SetColort “W+/NT) 
■>*»*• I _ r 

SetColort “BG+ZN”) 

99 “ _ 

• • 

O 44_44 

SetColort “W+/IST) 

•>9 •• v _r 

• • » 

SetColort “BG+/N”) 

90*»_ r 

• • 

<) 44 44 

SetColort M W+/N M ) 

99 ** \ _y» 

• • » 

9 

4 

9 


44 


SetColort cor) 

(a 08. (X) Clcar To 23. 80 
SetPost 11.29 ) 

SetColort “W+/1ST) 

r ///A” 

r //// *r 


9“ 

• 

//// _ | 

1 A\\r 

944 

• 

/ \ 

/• \\r 

9“ 

• 

/ / 

1 _\\\r 

9” 

• 

/ \\ 

//\\r 

9“ 

• 

1 M\_ 

% // |W\" 

9“ 

• 

\ \ 

% 1 \\\r 

9” 

4 

A \ / 

__\ iw 

9“ 

• 

n\\ 

/_r 

9“ 

• 

// \v_ 

_// \\_/\^ 

9 ». 

• 

/_ 1 \_ 

j |_ ( \ a r 

SetColort 

“G+/N”) 

• 


? “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA” 

Inkeyt 3) 


SetPost 00,00) 
SetColort “W+/NT) 

? “ /-.** 

SetColort “BG+/N”) 

•>9 “ _ 

• • 

9 44 _ 44 


SetColort "W+/N") 

*»«/ _’• 

• • • 

SetColort “BG+/N”) 

99“ _ 


9 


44 


SetColort “W+/N”) 

99“ | _“ 

SetColort “BG+/N”) 

•>9“ _ 

4 • 

9 44_44 

SetColort “ W+/N”) 

99 “ I _“ 

SetColort “BG+ZNT) 

99 “ _" 

4 • 

9 44 

SetColort “W+/N”) 

*>*>»* \ _r 

?“ \_—” 

9 


• • 


44 


SetColort cor) 

(a 08.00 Clcar To 23. 80 
SctPos( 11,29) 

SetColort “W+/N”) 


9“ 

• 

///A 

A\\r 

9” 

• 

nu n 

/* \\\r 

9“ 

• 

////_ 1 

1 _\\\r 

9” 

# 

/ \ 

\ wr 

nr 

• 

/ / 

/ \\\r 

nr 

• 

/ \\ t* 

§ \ /wr 

nr 

• 

1 M\_ 

% // 

944 

• 

\ \ 

% 1 

r» 

• 

/\ \ / 

/ / \r 

9“ 

• 

u\\ 

/ /r 

9“ 

• 

II \\_ 

__// \r 

9 *. 

• 

l—l \_J 

i—/1_ 

SetColort 

“G+/N”) 



44 


9--AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' 

Inkeyt 3) 


SetPost 00,00) 
SetColort “W+/N”) 

9 44 44 

• 

SetColort ‘‘BG+/NT) 

99“ _ 

• • 

9 4 4 4 4 

s 

SetColort “W+/N”) 

99 « / _V 

• 4 # 

SetColort “BG+/N”) 

99 “ _ 

• • 

9 44 44 

SetColort “W+/NT) 

99“ / _r 

4 • í 


45 

























































































X Animação em 



com o 



Sc(Color( "BG+/N") 


•>9 ** 
• • 

O *•_ 


M 




SetColoU "W+/NT) 

•» - j > h 


♦ • 


SctColort “BG+/N") 

■M« _*' 

• • 

O «4 M 

SctColor( “W+/N”) 

99 •• I _~ 

?" \ -. w 

? - V_—' 

SctColor( cor) 

to 08.00 Clear To 23. 80 

SctPoM 08.29) 

SetColoH “W+/IST) 


9** 

• 

///A 

A\\r 

9** 

• 

//// n 

/* ww 

nr 

• 

//// _ | 

|_ww 

nr 

• 

/ \ 

/ wr 

9” 

• 

i /1 

<&/ pr 

9*' 

• 

ii \ 

% y/pv 

nr 

• 

i\ _ 

% / 

r 

• 

11 / 

I w 

• 

i i 

i r 

nr 

• 

\ i 

i / 4% 

nr 

4 

i/ 

\r 

«r 

• 

i/ 

\r 

• 

ii 

ir 

•V 

4 

ii_ 

_ir 

4 

\_j 

i _ r 


44 


SetColoU “G+/NT) 

9 ••AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA** 

lnkcy( .3) 

SctColoil cor) 

to; 08.00 Clear To 23. 80 

SctPos< 08.29) 


SctColort 

"W+W ) 


•r % 

4 

///A 

A\\r 

*r* 

• 

nu n /* ww 

*r 

4 

////_ 

ji _ww 

nr 

4 

/ \ 

t wr 

n" 

4 

i/1 

@/ fr 

9», 

4 

II \ 

% V/f 

T 

4 

i\_ 

% 

nr 

4 

11 / 

1 \r 

4 

11 

i r 

*r* 

4 

\ i 

1 r 

«r* 

4 

i/ 

\r 

•r* 

4 

i/ 

\r * 

nr* 

4 

M 

ir 

*r* 

• 

ii_ 

—nr 

nr 

4 

\_| 



44 




SetColoit “G+/N") 

"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 


SetColorl “R+/NT) 
to 07.36 say chr( 03 ) 
lnkey< .3) 

@ 07,36 say ‘ * 
to 06.40 say chr( 03 ) 
lnkcy( 3) 

to 06.42 say chrt 03 ) 
lnkcy( .3 ) 

(l w. 06.40 say * 4 
lnkcy( .3) 
to: 06.42 say 4 4 
(« 06.38 say chr( 03 ) 
lnkcy( .3) 

to 06. 36 say chr( 03 ) 
lnkcy( 3 ) 








(gj 06.38 say 4 4 
lnkey( 3) 

(ai 06.36 say 4 4 
lnkey( .3) 

SetColoft cor) 

(a 08.00 Clear To 23, 80 
SetPos( 08.29) 

SctColoit 44 W+/N”) 


•r* 

4 

///A 

Awr 

9 ” 

4 

UH *\ 

/• ww 

•)” 

4 

//// _ | 

u vw 

9 ” 

4 

/ \ 

/wr 

9 - 
r 9 

i /1 

@/ iw" 

9 », 

4 

ii \ 

% v/pr 

r 

i\_ 

% /f 

9 ». 

• 

i i / 

1 \r 

r 

i i 

i r 

• 

\ i 

i /“ 

r 

i/ 

\r 

9 ” 

• 

i/ 

\r 

9 ” 

4 

ii 

ir 

9 ** 

4 

ii_ 

ir 

9 '* 

4 

\_J 

i _ r 


9” 





SetColoit “G+/N") 

9“AAAAAAAAAAAAAA/WVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA- 

lnkey( .3) 

SetColoit cor) 

(@ 08.00 Clear To 23, 80 
SelPos( 08,29) 

SctColort “W+/N”) 

T ///AA\\r 

r //// *\ \\\\" 

r //// i \\\r 

/ \ / wr 
1/ |/ |\r 
II \__v /|\r 
r |\_/pr 

9« 

9» 

9’* 

4 

9'* 

4 

9” 

9” 

9** 

9” 


SetColoit “G+/N”) 

9 “AAAAAA/NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA** 

SetColort “R+/N”) 

@ 07.36 say chr( 03 ) 
lnkey( .1 ) 

@ 06.38 say chr( 03 ) 
lnkcy(. I ) 

(w t 06.40 say chrt 03 ) 
lnkey( .1) 

@ 06,34 say chr( 03 ) 
lnkey(. I) 

@ 06,32 say chr( 03 ) 

!nkey( .1 ) ’ 

(gj 05,34 say chr( 03 ) 
lnkey( .1 ) 

@ 05,38 say chr( 03 ) 

SctColort 44 W+/N") 

SctPos< 23.55) 

for x :** I lo len( Mat_nom ) 

@ 23, col() say Mat_nom[x] 
lnkcy(. I ) 
next 

SetPos( 24,00) 

SetColort cor) 

SctCursor( 1) 


46 



























































# .* *+-*« » 

» .$ * > # * 
- 4’, - X éfé$ k + 

*. *■' *•?••£: ♦ i *■ 


H*tTST 


* f i I 




f*r» ••»* 

•«f 

*, * f 


fr* *• • •a-.* • 

E isso ai 


. . 


matemáticos, educacionais, utilitários para internet, jogos. etc. Adquira 
uma cópia deste nosso fantástico acervo de programas, gravados em I 5 


transferencia aos programas aos c t )s para uisquctc (ou para seu 
Winchester), um programa loca! i/ador que acha com facilidade o 
programa que você precisa cm um banco dc dados com a listagem 
completa dos programas incluindo nome. descricào. data. tamanho em 

bytes, categoria c çqdigo. 
SIM, todos os 50.000 programas serào seus, para você usar, copiar, 

vendei ou alugar a qualquer hora? 
E quanto custa este pacote com mais dc 50.000 programas c todos os 
outros itens descritos acima? Apenas RS 1.500.00 que lambem podem 
ser pagos cm 3 parcelas dc R$600,00 ou seis parcela* dc RS3’50.00.Todo 
o material tem garantia de 5 anos e vem acompanhado dc nota fiscal 

para sua segurança e tranquilidade. 


NEM ES IS IN FOR M AT IC A LT D A. 
Rua Sete dc Setembro. 92 sala 1203-ccnlm-Rio dc Janeim-RJ-Brasil 

TEUiPONEl (021) 242-034X-tax (021 >242-4760 
INTERNET:nttp://\yww.ibase.org./^nemesistur 





















































































—- 



AG fUR Photografische Industrie 


QUALIDADE A TODA PROVA 

TYPON, é uma empresa suíça que fabrica filmes para a lndus f na de artes gráficas 
com reputação internacional há mais de 50 anos, além de toda a qualidade e 
produtividade efetivamente comprovada por consumidores europeus, os filmes 
para Scanner e imagesetter TYPON foram, ainda, mais aperfeiçoados em suas 
propriedades mecânicas. Hoje. os clientes TYPON passaram a beneficiar-se' 
com: 

• Melhorada e mais prolongada proteção eletrostática 

• Melhor e mais fácil manuseio nos equipamentos de Imagesetter 

• Significativo aumento de resistência a pressões e danos ao filme 



FILMES TYPOSCAN E TYPOTYPE 

Dimensão e aplicações 





A TYPON detém a mais moderna tecnologia “Day Light Load". 
Esta tecnologia de ponta permite um carregamento seguro dos 
filmes em ambiente normal de luz do dia, dispensando totalmente 
o uso de câmara escura. 

ISO QUALITY CERTIFICATE 
Recebido em março de 1994. 

Qualidade é prioridade para a TYPON O Certificado de Qualidade 
ISO 9001 faz com que nossos clientes não precisem apenas 
acreditar na palavra da TYPON. 

Para adquirir os produtos TYPON no Brasil e obter maiores 
informações, contate: 


St C 





IW te» 

n*/w*. • 




mi 




• • 


L 






DISTRIB UIDOR EXCLUSIVO 




rm 


da 


COMERCIAL IMPORTADORA SEPIA LTDA. 

Rua Alves Montes, n° 21, São Cristóvão Rio de Janeiro - CEP 20920-430 
Tel.: (021) 589-5581 - FAX: (021) 589-3356 


I